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...
}

関数 get now date from log4cplus と「2016-04-13-12-30_OTS.csv」および「2016-04-13_OTS.csv」ファイル名を使用する場合、関数/コーディングの書き方は?

手伝ってくれませんか?

4

1 に答える 1

0

log4cplus にはFileAppnder::getName()機能があります。アペンダーにアクセスするには、 を使用しますLogger::getAppender()

しかし、なぜこれを行う必要があるのでしょうか。

アップデート

私は間違っていた。getName()ファイル名を取得しません。

唯一の選択肢は、独自のアペンダーを派生させFileAppenderて必要な機能を追加するか、log4cplus のソースにパッチを適用してそのような機能を追加することだと思います。

于 2016-04-14T07:27:22.343 に答える