eightqueen
V2EX  ›  Java

Java 的 log4j2 怎么按级别输出到不同文件?

  •  
  •   eightqueen · May 13, 2018 · 2330 views
    This topic created in 2948 days ago, the information mentioned may be changed or developed.

    我希望所有 error 日志都打到 error.log 文件里,所以设定最顶层的 logger(com.baidu)日志级别为 error,子包(比如 com.baidu.trace )级别为 info,但是子包的 error 日志始终无法打到 error.log 里,而是和 info 日志一起打到子包配置的文件里。

    vjnjc
        1
    vjnjc  
       May 14, 2018 via Android
    我也想知道😂
    zhantss
        2
    zhantss  
       May 14, 2018
    log4j 实现每一个等级的 Threshold 是按照优先级的包含关系确定写入文件的,比如 info 包含了 error 等
    你需要控制写入文件的话需要自己实现一个 Appender,主要重写的方法是 isAsSevereAsThreshold,改成相同而不是 equals,默认返回还是 true
    具体看这两段代码
    https://github.com/apache/log4j/blob/trunk/src/main/java/org/apache/log4j/AppenderSkeleton.java#L218
    https://github.com/apache/log4j/blob/trunk/src/main/java/org/apache/log4j/Priority.java#L123
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1063 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:44 · PVG 06:44 · LAX 15:44 · JFK 18:44
    ♥ Do have faith in what you're doing.