【问题标题】:Can I configure log4cxx both using a property file and runtime configuration?我可以同时使用属性文件和运行时配置来配置 log4cxx 吗?
【发布时间】:2013-03-25 00:03:54
【问题描述】:

我想读入 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"));

--我注意到输出仍然写入我的配置文件中的原始位置。

难道不能用代码(运行时)和文件来配置吗?

【问题讨论】:

  • 你找到解决方案了吗?

标签: c++ logging log4j log4cxx


【解决方案1】:

是的,尽管您有 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);
并且您可能还想将附加程序设置为类别
log4c_category_set_appender(mycat,myappender);

【讨论】:

    猜你喜欢
    • 2015-05-30
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    相关资源
    最近更新 更多