`
koen
  • 浏览: 80793 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用slf4j框架发生重复日志问题

阅读更多

在使用slf4j进行日志输出的时候,发现这样一个问题。

当使用如下的log level设置的时候,所有“abc.def”包中通过Logger.info()输出的日志在"STDOUT"和"ROLLING_FILE" appender中都会打印两次。("STDOUT"是控制台,"ROLLING_FILE"是自定义的日志文件。)

  <root level="INFO">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="ROLLING_FILE" />
  </root>
  <logger name="abc.def" level="INFO">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="ROLLING_FILE" />
  </logger>
 



我考虑了一下,觉得问题的原因是:root lever logger和specific logger的打印是各自独立的,而不是我原来认为的“如果为abc.def包设定了specific logger则root level logger就不会打印(互斥)”。

因此我把配置改成了:

  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
  <logger name="abc.def" level="INFO">
    <appender-ref ref="ROLLING_FILE" />
  </logger>
 



改完之后的日志行为是:abc.def包中的info level的日志会同时出现在"STDOUT"和"ROLLING_FILE" appender中,而其他package的日志只会出现在"STDOUT"中,这正是我想要的。

这说明:root level logger是会对所有Logger输出都有效的,而specific logger只会对设定的package生效。

分享到:
评论

相关推荐

    java开源包4

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包8

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包1

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包11

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包2

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包3

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包6

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包5

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包10

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包7

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包9

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包101

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    Java资源包01

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开发常用jar包

    slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统 spring.jar spring核心包 spring-security-core-2.0.4.jar 和 spring-security-taglibs-2.0.4.jar 权限管理 commons-codec-1.3....

    JAVA上百实例源码以及开源项目源代码

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    JAVA上百实例源码以及开源项目

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    nakadi-java:N Nakadi Event Broker的客户端库(示例

    地位 建造: 发布下载: ... 唯一的依赖关系是SLF4J API。 强大的HTTP处理。 请求/响应行为和消费者流处理的重要性与功能相同。 操作可见性。 错误处理,流重试,日志记录和检测与功能具有同等重要的地位

    Spring Cloud Finchley SR2全套(集成Spring Gateway)

    框架中包含了熔断器聚合监控、链路追踪监控,这里比较常规就不再赘述,唯一遇到的问题就是链路追踪时日志包重复引用的错误如下处理即可 &lt;groupId&gt;io.zipkin.java &lt;artifactId&gt;zipkin-server ${zipkin.version} ...

Global site tag (gtag.js) - Google Analytics