2011-02-11 16 views
3

Log4Cxxをロギングに使用していますが、%lディレクティブを使用してログトレースの場所(ファイル名と行番号)を確認したいと思います。私が持っている問題は、私もfull path names to the compilerを提供するCMakeを使用しているということです。これにより、ログ列がそれ以上整列しなくなり、log4cxxが__FILE__プリプロセッサマクロを使用してその情報を判断するため、読み込みが困難になります。Log4cxxとCMakeとの完全なファイルパス

回避策を知っている人はいますか?私は例えば、 "filename.cpp"だけを取得するか、入れ子のパラメータでよりうまくいくかを指定したいとします。例えば、2つのネストは "module/submodule/filename.cpp"になります。設計上、CMakeは完全な哲学を持っているようですので、これは未知の私のプリプロセッサディレクティブを使うか、Log4CXXを何らかの方法で欺くことによって解決できると思います。

答えて

1

あなたは少なくともlog4cxxのファイル名出力の最大幅を指定するには、「ConversionPattern」を使用して試みることができるようになっています

http://logging.apache.org/log4cxx/apidocs/classlog4cxx_1_1_pattern_layout.html

かについてはこちらをConversionPatternの「ページ上で見つける」ん設定ファイルの例:あなたは最大幅を指定するとき

http://logging.apache.org/log4cxx/index.html

ドキュメントによると、あなたは右端の文字を取得する必要があります。おそらく、あなたがここで探しているものに十分近似しているかもしれません。

CMakeは常にフルパスのソースファイル名をコンパイラに渡し、デバッグシンボルが正しいソースファイルを参照するようにします。完全なパス名を使ってすべてのプラットフォーム上であらゆることが起こることを保証するほうが簡単です。

関連する問題