2013-03-25 84 views
3

我想读一个配置文件到log4cxx,但在运行时,我想修改appenders/logger。我可以这样做吗?我可以使用属性文件和运行时配置来配置log4cxx吗?

例log4cxx文件:

log4j.rootLogger=all, console, file 

log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.layout=org.apache.log4j.SimpleLayout 
log4j.appender.console.threshold=info 

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %c [%p] %l %m%n 
log4j.appender.file.filename=logfile.txt 
log4j.appender.file.datePattern='.'yyyy-MM-dd 

示例源:

PropertyConfigurator::configure("./LoggingConfig.txt"); 

auto rootlogger = Logger::getRootLogger(); 
DailyRollingFileAppenderPtr fileappender = rootlogger->getAppender(LOG4CXX_STR("file")); 

fileappender->setFile(LOG4CXX_STR("thisisthenewfile.txt")); 

--I've注意到,产量仍写入到原来的位置在我的配置文件。

是不是可以配置使用代码(运行时)以及文件?

+0

您是否曾经找到过解决方案? – Alex 2014-03-19 03:52:02

回答

0

是的,虽然你有log4crc文件,但是可以通过你的代码修改appender或者logger。我用以下方式在log4c中完成了这个任务。
log4c_appender_t *myappender = log4c_appender_get("man.appender"); 更改前缀或登录您需要创建下列方式滚动文件UDATA的对象目录:
rollingfile_udata_t *rfu = rollingfile_make_udata();
然后设置路径
rollingfile_udata_set_logdir(rfu,"my/sample/path");
或前缀设置得
rollingfile_udata_set_files_prefix(rfu,"myPrefix");
然后设置滚动文件与appender
log4c_appender_set_udata(myappender,rfu);
而且你也可能要设置类别的appender
log4c_category_set_appender(mycat,myappender);

相关问题