我知道处理critical/error/debug/warning/info
消息的常用方法是通过消息/日志记录系统。然后可以使用标志来切换要打印的消息。
有时调试信息可能会让人不知所措。如果我需要通过模块更多地控制调试消息,该怎么办?如何通过模块切换调试消息?是否可以使用典型的消息/日志记录系统?或者更好的做法是什么?
我以前在C ++中使用#define MODULE1_DEBUG 1/0
。然后写一堆
#ifdef MODULE1_DEBUG
cout << "my debug message for module1" << endl;
#endif
这样我就可以在每个模块的标题中切换#define来启用调试信息。
答案 0 :(得分: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
这将在DEBUG的com.example.dao包中设置日志级别,在INFO的com.example.action和WARN的com.example.controller中设置日志级别。
甚至可以为不同的模块提供不同的属性。只需创建更多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