Log4cplus setproperty函数用法

时间:2018-03-12 16:04:36

标签: configuration-files log4cplus

我在配置文件中使用以下配置:

log4cplus.appender.TestLogAppender = log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.TestLogAppender.FilenamePattern = %d{yyyyMMdd}.log
log4cplus.appender.TestLogAppender.MaxHistory = 365
log4cplus.appender.TestLogAppender.Schedule = DAILY
log4cplus.appender.TestLogAppender.RollOnClose = false
log4cplus.appender.TestLogAppender.layout = log4cplus::PatternLayout
log4cplus.appender.TestLogAppender.layout.ConversionPattern = %m%n

在我的代码中,我为我的记录器提供了以下初始化函数,首先,我加载配置文件,然后我希望将'FilenamePattern'属性设置为一个新值,这样当我运行多个时应用程序,每个应用程序将写入它自己的日志文件:

void InitLogger()
{
  ProperyConfigurator::doConfigure (L"LogConf.conf");
  helpers:Properties prop(L"LogConf.conf");
  props.setPropery(L"log4cplus.appender.TestLogAppender.FilenamePattern" , 
  "Log/AppLogName.log.%d{yyyy-MM-dd}");
}

问题是,当我运行一个应用程序时,日志消息将写入原始配置文件(在“FilenamePattern”属性中)中给出的文件中。 似乎'setproperty'没有设定我给它的新值。

初始化记录器功能有问题吗? 我使用setProperty方法错了吗?

1 个答案:

答案 0 :(得分:1)

在配置系统后,您显然正在更改属性。这样做:

helpers:Properties prop(L"LogConf.conf");
props.setPropery(L"log4cplus.appender.TestLogAppender.FilenamePattern" , 
  "Log/AppLogName.log.%d{yyyy-MM-dd}");
ProperyConfigurator propConf (prop);
propConf.configure();