在我project.clj
:dependencies
,我有:如何决定哪些appenders使用`clojure.tools.logging`在日志上执行操作?
[org.clojure/tools.logging "0.2.6"]
[ch.qos.logback/logback-classic "1.0.11"]
[net.logstash.logback/logstash-logback-encoder "1.0"]
在我core.clj
,我有:
(clojure.tools.logging/info "both stdout and stash")
(clojure.tools.logging/log "stash" :info nil "only stash?")
在我的资源路径,我有一个文件logback.xml
,我在其中定义了两个附加目的地stdout
和stash
都连接到根:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="stash" class="ch.qos.logback.core.FileAppender">
<file>example.log</file>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="all">
<appender-ref ref="stash" />
<appender-ref ref="stdout" />
</root>
</configuration>
当我跑我的节目,我看到下面的(期望的)输出在example.log
:
{"@timestamp":"2013-04-10T12:42:16-04:00","@message":"both stdout and stash","@fields":{"logger_name":"scheduler.core","thread_name":"main","level":"INFO","level_value":20000}}
{"@timestamp":"2013-04-10T12:42:16-04:00","@message":"only stash?","@fields":{"logger_name":"stash","thread_name":"main","level":"INFO","level_value":20000}}
然而,我看到这两个打印到stdout下列行 - 我仅想看到第一:
12:42:16.573 [main] INFO scheduler.core - both stdout and stash
12:42:16.641 [main] INFO stash - only stash?
我如何选择使用clojure.tools.logging
登录哪个appender?特别是,在根目录下连接了stdout
和stash
,我如何只能登录到stash
?
定义名称为“clojure.tools.logging”的记录器 – 2013-04-11 15:01:14
然后,这将仅适用于从'clojure.tools.namespace'发送的消息,这不是您想要的。 – 2013-04-11 19:32:10