我已经阅读了2小时的logback手册,仍然无法知道如何做我需要的。
它就像标题所说的那样简单:我只想将错误记录到文件中,而将其他级别(包括ERROR)记录到控制台。
这是我的logcat.xml文件的根部分:
<root level="TRACE" >
<appender-ref ref="CONSOLE_APPENDER" />
<appender-ref ref="FILE_APPENDER" />
</root>
此配置的问题在于它将每个级别&gt; = TRACE记录到两个appender。
我可以让root用户只使用控制台,并定义一个文件记录器:
<logger name='file_logger' level='ERROR' >
<appender-ref ref="FILE_APPENDER" />
</logger>
但是我必须像这样调用普通记录器:
LoggerFactory.getLogger(ClientClass.class);
文件记录器如下:
LoggerFactory.getLogger("file_logger");
我不想为每个班级选择记录器。我只想使用class as参数从工厂获取根记录器,并根据级别执行正确的操作。
这可能吗?
答案 0 :(得分:19)
将其放入文件追加器定义:
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
ThresholdFilter
位于logback-classic.jar
。
答案 1 :(得分:1)
请参考以下代码:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
答案 2 :(得分:0)
我不明白为什么在这里会错误地回答。 这个家伙只希望在他的文件中出现错误消息。
这是正确的答案:
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>