Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Logback忽略父包的记录器_Java_Logging_Logback - Fatal编程技术网

Java 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>

Logback忽略父包的记录器

我有那些附录:

追加器

<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”
    所有记录者都以相同的级别(最高-信息)写入相同的信息
如何配置根记录器通过appender收集和打印所有跟踪日志消息的logback,
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>