我想将配置文件读入log4cxx,但是在运行时,我想修改appenders / loggers。我可以这样做吗?
示例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"));
-我注意到输出仍然写入我的配置文件中的原始位置。
是否可以使用代码(运行时)以及文件进行配置?
最佳答案
是的,尽管您有log4crc文件,也可以通过代码修改附加程序或记录器。我已经按照以下方式在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");
然后使用附加程序设置滚动文件log4c_appender_set_udata(myappender,rfu);
并且您可能还想设置带有类别的追加器log4c_category_set_appender(mycat,myappender);
关于c++ - 是否可以使用属性文件和运行时配置来配置log4cxx?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15605690/