【问题标题】:Java granular debug message for different modules针对不同模块的 Java 粒度调试消息
【发布时间】:2015-08-03 03:37:45
【问题描述】:

我知道处理critical/error/debug/warning/info 消息的常用方法是通过消息/日志系统。然后可以使用一个标志来切换要打印的消息。

有时调试消息可能会让人不知所措。如果我需要通过模块对调试消息进行更多控制怎么办?如何按模块切换调试消息?典型的消息/日志系统有可能吗?或者有什么更好的方法?

我曾经在 C++ 中使用#define MODULE1_DEBUG 1/0。然后写一堆

#ifdef MODULE1_DEBUG 
cout << "my debug message for module1" << endl;
#endif

这样我可以切换每个模块标题中的#define 来启用调试消息。

【问题讨论】:

    标签: java debugging logging messaging


    【解决方案1】:

    是的,您可以通过模块控制调试消息。请在下面找到一个示例配置文件来控制 log4j 中的消息。

    log4j.appender.MY_LOGGER=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.MY_LOGGER.DatePattern='.'yyyy-MM-dd
    log4j.appender.MY_LOGGER.File=/logs/my.log
    log4j.appender.MY_LOGGER.Append=true
    log4j.additivity.MY_LOGGER.Append=false
    log4j.appender.MY_LOGGER.layout=org.apache.log4j.PatternLayout
    log4j.appender.MY_LOGGER.layout.ConversionPattern=[MY] %d [%t] %-5p %C - %m%n
    
    log4j.logger.com.example.dao=DEBUG, MY_LOGGER
    log4j.logger.com.example.action=INFO, MY_LOGGER
    log4j.logger.com.example.controller=WARN, MY_LOGGER
    

    这将在 com.example.dao 包中的 DEBUG、com.example.action 在 INFO 和 com.example.controller 在 WARN 设置日志记录级别。

    您甚至可以为不同的模块设置不同的属性。只需创建更多 LOGGER 实例,如下所示

        log4j.appender.MY2_LOGGER=org.apache.log4j.DailyRollingFileAppender
        log4j.appender.MY2_LOGGER.DatePattern='.'yyyy-MM-dd
        log4j.appender.MY2_LOGGER.File=/logs/my2.log
        log4j.appender.MY2_LOGGER.Append=true
        log4j.additivity.MY2_LOGGER.Append=false
        log4j.appender.MY2_LOGGER.layout=org.apache.log4j.PatternLayout
        log4j.appender.MY2_LOGGER.layout.ConversionPattern=[MY2] %d [%t] %-5p %C - %m%n
    
        log4j.logger.com.example.my2.controller=WARN, MY2_LOGGER
    

    http://logging.apache.org/log4j/2.x/

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 2012-12-28
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 2017-12-01
      • 2019-12-22
      • 2019-10-08
      • 1970-01-01
      相关资源
      最近更新 更多