嘿,我正在尝试 log4cplus(类似于 log4j 和我的标签)库。
从属性文件中,是否可以使记录器级别取决于其父级,如下所示:
- 如果 parent=INFO & child=WARN ,孩子应该记录消息 >= "WARN"
- 如果 parent=OFF & child=WARN ,孩子不应该记录任何消息。
- 如果 parent.parent=ALL & parent=WARN & child=INFO,孩子应该记录消息 >=WARN
- 如果 parent.parent=OFF & parent=ALL & child=WARN ,则任何人都不应记录导致 parent.parent 的消息。
使用下面的代码,结果如下(并且错误!)
- parent=WARN & child=FATAL ,孩子正在记录 WARN 消息
- parent=OFF & child=WARN ,孩子正在记录消息。
我的属性文件 - log.properties:
log4cplus.logger.cpuLoad=WARN, FILEAPPENDER
log4cplus.logger.cpuLoad.child=FATAL, FILEAPPENDER
log4cplus.additivity.cpuLoad.child=false
log4cplus.appender.FILEAPPENDER=log4cplus::RollingFileAppender
log4cplus.appender.FILEAPPENDER.File=./cpuLoad.log
log4cplus.appender.FILEAPPENDER.MaxFileSize=1MB
log4cplus.appender.FILEAPPENDER.layout=log4cplus::PatternLayout
log4cplus.appender.FILEAPPENDER.layout.ConversionPattern=%d{%m/%d/%y %H:%M:%S} %-5p %c{2} – %m%n
我的 C++ 代码 - main.cpp:
Logger loggerCpu = Logger::getInstance("cpuLoad");
Logger loggerCpuChild = Logger::getInstance("cpuLoad.child");
LOG4CPLUS_WARN(loggerCpu, "hello from loggerCpu");
LOG4CPLUS_WARN(loggerCpuChild, "hello from loggerCpuChild" );
我希望它可以从 log4cplus 库本身工作,并且主要来自属性文件。我还需要这个父/子关系,所以我可以使用 getParent()。提前致谢!