【问题标题】:log4j: logging a package, but excluding its sub-packageslog4j:记录一个包,但不包括它的子包
【发布时间】:2011-03-31 10:52:38
【问题描述】:

您好,我想排除某些子包被我的一个记录器记录,因为它们正在被另一个记录器记录。例如。

com.mysite.app = logger1
com.mysite.app.news = logger2
com.mysite.app.events = logger3

我希望 logger1 仅记录 com.mysite.app(包括 com.mysite.app.utilities)未由 logger2 和 logger3 记录的任何内容。我怎么能这样做?

(请提供属性格式的帮助,XML 格式供其他人参考以获得奖励积分)

【问题讨论】:

    标签: java configuration log4j


    【解决方案1】:

    我一直认为log4j.logger.com.mysite.app = logger1 也负责将子包中的消息记录到logger1

    如果您真的不希望logger2logger3 的消息干扰logger1 的消息,则需要将它们的可加性设置为false

    log4j.additivity.com.mysite.app.news=false
    log4j.additivity.com.mysite.app.events=false
    

    【讨论】:

    【解决方案2】:

    试一试:

    log4j.logger.com.mysite.app=info, stdout
    log4j.additivity.com.mysite.app=false
    
    log4j.logger.com.mysite.app.news=off, stdout
    log4j.additivity.com.mysite.app.news=false
    
    log4j.logger.com.mysite.app.events=off, stdout
    log4j.additivity.com.mysite.app.events=false
    

    【讨论】:

      【解决方案3】:

      对于 XML 配置:

      <logger name="com.mysite.app.news" additivity="false">
          <appender-ref ref="logger2" />
      </logger>    
      <logger name="com.mysite.app.events" additivity="false">
          <appender-ref ref="logger3" />
      </logger>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多