嘿,我正在尝试log4cplus(类似于log4j,因此我的标签)库。
从属性文件中,是否可以使记录器级别依赖于其父级,如下所示:
使用下面的代码,结果如下(并且错误!)
我的属性文件 - 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()。提前谢谢!
答案 0 :(得分:0)
尝试更改此行
log4cplus.logger.cpuLoad.child=FATAL, FILEAPPENDER
进入这个
log4cplus.logger.cpuLoad.child=INHERITED, FILEAPPENDER
这应该可以解决问题。
修改强>
@jaguzu:我不太了解log4j,但在我看来,你想要实现的是在log4j和log4cplus都使用的模型之外:要么你明确地设置你的日志级别,要么你从父级继承它记录仪。您可以使用记录器阈值和appender过滤器实现更多过滤,但这两者都不会从父记录器AFAIK继承。