Java Logback忽略父包的记录器
Logback忽略父包的记录器 我有那些附录: 追加器Java Logback忽略父包的记录器,java,logging,logback,Java,Logging,Logback,Logback忽略父包的记录器 我有那些附录: 追加器 <appender name="fileAppender1" class="ch.qos.logback.core.FileAppender"> <file>myLogFile1.log</file> <encoder> <pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
<appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
<file>myLogFile1.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="fileAppender2" class="ch.qos.logback.core.FileAppender">
<file>myLogFile2.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
myLogFile1.log
%d[%thread]-5级别%logger-%msg%n
myLogFile2.log
%d[%thread]-5级别%logger-%msg%n
%d[%thread]-5级别%logger-%msg%n
和3名伐木工人:
记录器1
<logger name="my" level="INFO" additivity="false" >
<appender-ref ref="fileAppender1" />
</logger>
记录器2
<logger name="my.test" level="DEBUG" additivity="false" >
<appender-ref ref="console" />
</logger>
记录器3
<root level="TRACE">
<appender-ref ref="fileAppender2" />
</root>
- 如果我使用其中三个,我只能得到第二个记录器工作。(最权威的)
- 如果我删除
所有记录者都以相同的级别(最高-信息)写入相同的信息additivity=“false”
my
记录器收集并打印包my
的所有调试消息,不带包my.test
和my.test
记录器收集并打印包my.test
和以下的所有信息消息?使用级别过滤器
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
信息
接受
否认
因此,您的logback.xml将成为
<appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>myLogFile1.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="fileAppender2" class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>myLogFile2.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<logger name="my" level="INFO" additivity="false" >
<appender-ref ref="fileAppender1" />
</logger>
<logger name="my.test" level="DEBUG" additivity="false" >
<appender-ref ref="console" />
</logger>
<root level="TRACE">
<appender-ref ref="fileAppender2" />
</root>
信息
接受
否认
myLogFile1.log
%d[%thread]-5级别%logger-%msg%n
痕迹
接受
否认
myLogFile2.log
%d[%thread]-5级别%logger-%msg%n
调试
接受
否认
%d[%thread]-5级别%logger-%msg%n
更新
如果需要错误和警告,请使用带警告的阈值过滤器(如下所示),如果需要信息,请使用错误和警告作为信息的阈值过滤器(我相信这是默认行为)
警告
所以您要查找的唯一跟踪是控制台中的fileAppender2调试和fileAppender1中的信息(对于my和my的子包),对吗?是的。我不明白如何创建一个记录器来聚合特定级别的所有日志消息。就像log4j中的logger“root”一样,感谢您的回答,但当我运行此代码时:打包my.study.logback;公共类MainClass{private static final Logger log=LoggerFactory.getLogger(MainClass.class);公共静态void main(String[]args){log.trace(“trace”);log.debug(“debug”);log.info(“info”);log.warn(“warn”);log.error(“error”);}
我只得到“info”myLogFile1.log中的行。另外,很抱歉,对于代码格式,您希望忽略跟踪和调试,并且只希望myLogFile1.log中包含所需的信息、警告和错误?谢谢您的帮助。我处理了一个问题
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>