2013-03-25 103 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);

相關問題