我在配置文件中使用以下配置:
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方法错了吗?
答案 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();