This Project Has Not Released Any Files
log4cppには出力ファイルのサイズでローリングする、すなわち、指定した最新のバイト数のログだけを残すということはできます(RollingFileAppender)。ですが、例えば、1週間分のログだけを残したいといった場合にはlog4cppは対応していません。
ここでは、簡易的に対応する方法を説明します。
独自のAppenderを作成すればもちろん可能ですが、このやり方だと、設定ファイルによる読み込み部分までlog4cppを改造することになり、面倒ですから、極力、既にあるlog4cppの機能でどうにかならないか考えます。
さて、その方法ですが、FileAppenderあるいはRollingFileAppenderの出力先ファイル名(パス)に日付を含めてしまおうというものです。
やり方は、まず、環境変数(名前は何でも良い)に日付(「/」などファイルパスに使用できない文字を取り除いたもの)を設定します。
そして、設定ファイルにてファイル名を設定するところで、その環境変数を参照するようにすればOKです。
設定ファイルの例:
rootCategory=DEBUG, A4 appender.A4=org.apache.log4j.FileAppender appender.A4.fileName=log${NowDate}.log appender.A4.layout=org.apache.log4j.BasicLayoutファイル名のところに環境変数「NowDate」を指定しています。
プログラムの例:
- #include <log4cpp/Category.hh>
- #include <log4cpp/PropertyConfigurator.hh>
- int main(void){
- const char* propFileName = "props.properties";
- log4cpp::PropertyConfigurator::configure( propFileName );
- log4cpp::Category& root = log4cpp::Category::getRoot();
- root.error("message");
- log4cpp::Category::shutdown();
- return 0;
- }
環境変数設定の例:
NowDate=`date +%y%m%d` export NowDate
実行結果の例(※実施日:2012/04/27):
takashi@takashi-virtual-machine:~/デスクトップ/ctest4$ ls a.out log120427.log main.cpp props.properties「log120427.log」が生成されていますね!
[PageInfo]
LastUpdate: 2012-05-12 11:23:46, ModifiedBy: daruma_kyo
[License]
GNU Free Documentation License
[Permissions]
view:all, edit:login users, delete/config:members