代码之家  ›  专栏  ›  技术社区  ›  cgp

Log4j对于每个类,如何确定优先级?

  •  1
  • cgp  · 技术社区  · 15 年前

    我试图使用Log4j允许针对特定类进行调试日志记录,我得到了以下结果:

    log4j.rootLogger=stdout, daily
    
    log4j.logger.com.mycompany.myapplication.mymodule=DEBUG
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{h:mm:ssa} %5p (%F:%L) - %m%n
    log4j.appender.stdout.threshold=warn
    
    log4j.appender.daily=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.daily.layout=org.apache.log4j.PatternLayout
    log4j.appender.daily.layout.ConversionPattern=%d{h:mm:ssa} %5p (%F:%L) - %m%n
    log4j.appender.daily.File=/some/file/path/stuff
    log4j.appender.daily.DatePattern=MMdd'.log'
    log4j.appender.daily.threshold=info
    

    如果这是作为tomcat一部分的WEB-INF/classes/log4j.properties文件 应该调试来自的消息 mycompany.myapplication.mymodule (或者我是否完全错误地更改了每个类的日志记录级别?)

    其次

    4 回复  |  直到 15 年前
        1
  •  3
  •   Aaron Digulla    15 年前

    您告诉类在调试级别进行日志记录,但告诉附加程序忽略警告和信息下面的任何内容,这样您就看不到日志消息。

    log4j.properties 将发现:

    1. WEB-INF/课程
    2. WEB-INF/lib中的任何JAR
    3. 公共/类(在tomcat目录中)
    4. 您放入公用/背书的任何罐子
    5. 共享/类
    6. 放入shared/lib的任何JAR

    发现将在找到第一个文件后停止。

        2
  •  1
  •   KLE rslite    15 年前

    对于你的第一个问题,我想说 log4j.appender.daily.threshold=info

    通常,我们不会给附加器设置阈值,而是为记录器配置级别。


    除了有用的验证之外,它还添加了一些有趣的特性或默认值。

        3
  •  0
  •   matt b    15 年前

    是的,您似乎正确配置了各个记录器。

    不,它们不会被看到,因为您正在声明 thresholds 在上面的两个appender上:

    log4j.appender.stdout.threshold=warn
    log4j.appender.daily.threshold=info
    

        4
  •  0
  •   wallenborn    15 年前
    1. 我想你必须给我的模块一个appender,如

      log4j.additivity.com.mycompany.myapplication.mymodule=false

      此外,如果将additivity设置为false,则确保只记录消息 通过您指定的附加器。

    2. jar的“根”通常不包括在类路径中,因此jar中的log4j.properties对于JVM应该是不可见的。