1

我想获取当前文件名,但我不知道如何获取它。

例如:在 config.properties 文件中:

log4cplus.rootLogger=TRACE, OTS_H, OTS_D

log4cplus.appender.OTS_H=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.OTS_H.MaxHistory=10
log4cplus.appender.OTS_H.FilenamePattern=%d{yyyy-MM-dd-HH-mm}_OTS.csv
log4cplus.appender.OTS_H.layout=log4cplus::PatternLayout  
log4cplus.appender.OTS_H.layout.ConversionPattern=%m%n
log4cplus.appender.OTS_H.filters.1=log4cplus::spi::StringMatchFilter
log4cplus.appender.OTS_H.filters.1.StringToMatch=OK
log4cplus.appender.OTS_H.filters.1.AcceptOnMatch=true
log4cplus.appender.OTS_H.filters.2=log4cplus::spi::DenyAllFilter
log4cplus.appender.OTS_H.RollOnClose=false
log4cplus.appender.OTS_H.Schedule=DAILY
log4cplus.appender.OTS_H.CreateDirs=true

log4cplus.appender.OTS_D=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.OTS_D.MaxHistory=10
log4cplus.appender.OTS_D.FilenamePattern=%d{yyyy-MM-dd}_OTS.csv
log4cplus.appender.OTS_D.layout=log4cplus::PatternLayout  
log4cplus.appender.OTS_D.layout.ConversionPattern=%m%n
log4cplus.appender.OTS_D.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.OTS_D.filters.1.LogLevelMin=ERROR
log4cplus.appender.OTS_D.filters.1.LogLevelMax=ERROR
log4cplus.appender.OTS_D.filters.1.AcceptOnMatch=true
log4cplus.appender.OTS_D.filters.2=log4cplus::spi::DenyAllFilter
log4cplus.appender.OTS_D.RollOnClose=false
log4cplus.appender.OTS_D.Schedule=HOURLY

在我的 main.cpp

ConfigureAndWatchThread configureThread("config.properties", 10000);
Logger logger = Logger::getRoot();

int main(){

    // do something...
}

如果使用从 log4cplus 和“2016-04-13-12-30_OTS.csv”和“2016-04-13_OTS.csv”文件名获取现在日期的函数,如何编写函数/编码?

请你帮我解决一下好吗?

4

1 回答 1

0

log4cplus 有FileAppnder::getName()功能。要访问 appender,请使用Logger::getAppender().

但是,为什么您需要这样做呢?

更新

我错了。getName()没有给你文件名。

我想您唯一的选择是从中派生自己的附加程序FileAppender并添加必要的功能,或者修补您的 log4cplus 源以添加此类功能。

于 2016-04-14T07:27:22.343 回答