Java Logback:如何仅将错误记录到文件中
我已经阅读了两个小时的logback手册,仍然不知道如何做我需要的 它就像标题所说的那样简单:我只想将错误记录到文件中,而将其他级别(包括错误)记录到控制台中 这是我的logcat.xml文件的根部分:Java Logback:如何仅将错误记录到文件中,java,logging,slf4j,logback,Java,Logging,Slf4j,Logback,我已经阅读了两个小时的logback手册,仍然不知道如何做我需要的 它就像标题所说的那样简单:我只想将错误记录到文件中,而将其他级别(包括错误)记录到控制台中 这是我的logcat.xml文件的根部分: <root level="TRACE" > <appender-ref ref="CONSOLE_APPENDER" /> <appender-ref ref="FILE_APPENDER" /> </ro
<root level="TRACE" >
<appender-ref ref="CONSOLE_APPENDER" />
<appender-ref ref="FILE_APPENDER" />
</root>
文件记录器如下所示:
LoggerFactory.getLogger(ClientClass.class);
LoggerFactory.getLogger("file_logger");
我不想为每个类选择记录器。我只想使用类作为参数从工厂获取根记录器,并让它根据级别执行正确的操作
这可能吗?将其放入文件附加器定义中:
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
错误
ThresholdFilter
位于logback classic.jar
我不明白为什么这里的错误答案是上浮的。
这家伙只想要文件中的错误信息
以下是正确答案:
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
错误
接受
否认
参考:
请参阅以下代码:
<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>
信息
否认
接受
%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n
不错。我正在使用,似乎也很有效。这也有帮助;logback.xml的XSD。这可以帮助您配置变量。谢谢,你的方法奏效了。但是,这违背了root
标记上的level
属性的全部目的,因为这是它的主要功能-确定追加器的日志级别。这是因为解决方案UPPOUTED使用ThresholdFilter来过滤下面的所有错误。我理解这一点。我不明白它是如何解决作者所说的问题的。作者只想将错误记录到文件中。很好。我们其余的人都认为他想要“错误及以上”:)更新:在logback中,错误是最高级别的,不像log4j有“致命”的go图……我认为答案应该是相反的。接受和拒绝应该交换他们的位置这能回答你的问题吗?
<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>