3

ロギングにLog4Cxxを使用していますが、ログトレース(ファイル名と行番号)がどこにあるかを確認するために%lディレクティブを使用したいと思います。私が抱えている問題は、コンパイラにフルパス名を提供するCMakeも使用していることです。これにより、ログ列が整列されなくなり、log4cxxがその情報を決定するために__FILE__プリプロセッサマクロを使用するため、ログ列を読み取ることが困難になります。

誰かが回避策を知っていますか?たとえば、「filename.cpp」のみを取得するか、ネストパラメータを使用してより適切に取得するかを指定したいと思います。たとえば、2つのネストは「module / submodule/filename.cpp」になります。設計上、CMakeはフルパス哲学で動作するようです。したがって、これは、未知のプリプロセッサディレクティブを使用するか、Log4CXXを何らかの方法でだますことで解決できると思います。

4

1 に答える 1

1

「ConversionPattern」を使用して、少なくともlog4cxxのファイル名出力の最大幅を指定してみてください。

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

または、構成ファイルの例については、ConversionPatternの「ページで検索」を実行してください。

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

ドキュメントによると、最大幅を指定すると、右端の文字を取得する必要があります。多分それはあなたがここで探しているものに十分近い近似です。

CMakeは常にフルパスのソースファイル名をコンパイラに渡し、デバッグシンボルが正しいソースファイルを参照するようにします(たとえば)。フルパス名を使用すると、すべてのプラットフォームですべての場所で機能することを保証する方が簡単です。

于 2011-02-22T16:17:03.027 に答える