問題タブ [log4cplus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - CMake で Log4cplus をビルドして使用する
コミュニティ、
Embarcadero で Log4cplus ライブラリをビルドして使用する際に、次の問題があります。まず、http: //sourceforge.net/p/log4cplus/wiki/Home/ からライブラリをダウンロードします。次に、ライブラリをビルドするディレクトリに移動し、cmake -G "Borland Makefiles" mypathtotherootomypreviousdownload と入力します。次に、ビルド ファイルが現在のディレクトリに書き込まれたと表示されます。ここで、MSYS sh.exe を開始し、make と入力します。これも機能します。ライブラリのさまざまな動作テスト(exeファイルとして)を含むbinフォルダーを取得します。この bin フォルダーには、dll log4cplusUD.dll もあります。ここで、src フォルダーに、対応する LIB log4cplusUD.lib も見つかります。もちろん、動的ライブラリを Embarcadero に静的にリンクする方法はよく知っています。しかし、コンパイルしようとすると
外部シンボル log4cplus::Logger::getInstance が解決されず、リンカ エラーが発生します。
上記のコードは、sh.exe から make を実行した場合にコンパイルされて正常に実行されたテストの 1 つにすぎません。それで、私は何を間違っていますか?
また、上記の main.cpp と log4cplusUD.lib を次の CMakeLists.txt ファイルにリンクしようとしました
しかし、同じリンカーエラーが発生します!
html - C ++ Linuxでlog4cplusを使用してhtmlファイルにログを書き込む
Log4cplus を使用して、Linux ベースの家電製品でログを生成しています。これらのログは、現在、Web サーバーが実行されている家電製品で利用できます。また、このログファイルを Web ブラウザーで表示します。ただし、ログ ファイルはテキスト (html 形式ではない) であるため、ファイルはフォーマットされておらず、各ログを個別に表示することは困難です。
html 形式のログを使用して、これらのログを Web サーバー経由で表示したいと考えています。log4j は html 形式の出力ログをサポートしていますが、log4cplus を使用して html 形式のログを生成する方法は見つかりませんでした。この投稿は、log4cplus を使用してこれを行う方法のアイデアを収集することです。log4cplus または後処理のいずれかですが、リアルタイムでログを探しているため、リアルタイムです。
c - log4cplus を使用する場合、printf 形式を使用できますか?
log4cplus は C スタイル / printf 形式で印刷するための API を提供しますか?
理由: (C++ に加えて) C コードで log4cplus を使用したいのですが、事前に文字列を準備したくありません。
c++ - 追加ライブラリ使用時のリンク失敗
glog
ライブラリ (コードで使用されていない Google のロギング ライブラリ) を使用して単純な C++ プログラムをビルドすると、 「未定義の参照」エラーが発生します。-lglog
ビルド コマンドからを削除すると、リンクは成功します。
リンクに追加したライブラリがコードでまったく使用されていないことに注意してください。それにもかかわらず、ビルドが失敗しました。さらに、ライブラリglog
とlog4cpp
ライブラリは独立していると想定されています。
この異常な動作を説明できますか?
環境: Ubuntu 14.04
コード:
作業ビルド コマンド:
ビルド コマンドの失敗:
編集:
このコマンドも正常にビルドされます。
このコマンドは失敗します (ライブラリの順序を変更します):
これは成功します:
これは失敗します:
編集2:
重複した提案(1) と(2)を調べて、そこに何か役立つものがあるかどうかを調べましたが、これらのケースはコードで使用されていないライブラリが追加された状況に対処していないため、無関係であることが判明しましたリンクを失敗させます。
編集3:
私の環境のファイル (glog ライブラリ、log4cpp ライブラリ、log4cpp ヘッダーと test.cpp を使用): log_test.zip。
c++ - log4cplus - 書き込む前にファイルをフラッシュ
私の必要性は非常に単純です:
log4cplus を使用して、ログをログ ファイルに書き込み、書き込む前に毎回ログ ファイルをフラッシュできるようにしたいと考えています。このようにして、アプリケーションを実行している間、ログ ファイルには 1 行しかありません。
append=False プロパティを試しましたが、起動時にのみログ ファイルがフラッシュされます。
C++ で手動で行うこともできますが、製品が既に製品化されているため、C++ コードを記述したくありません。
何か案が ?
ありがとう、
c++ - Logger::getInstance() への未定義の参照 - ただし、場合によってのみ
log4cplus (現在の git master からコンパイル) を使用していますが、リンカーによって未定義の参照エラーが発生します。ただし、これらのエラーは一部のクラスでのみ発生します。
一般に、各クラスには次の形式があります。
ヘッダー (.h)
ソース (.cpp)
使用法
ロガーは、次のようにクラス内で使用されます。
コンパイルが機能している間、リンカーは未定義の参照エラーを発生させます
と
いくつかのクラスのために。私はすでに作業クラスからロガー部分をコピーしました:同じ結果。
静的ロガーをクラスメンバーに置き換えても機能しません -getInstance()
見つかりません。
この問題の回避策は、代わりにルートロガーを使用することです。これはコンパイル/リンクします(getRoot()
同じクラスの一部ですが!?):
しかし、未定義の参照エラーがあります
タイプミスがないことを確認するために、宣言/定義にこれらのマクロを使用しました。
同じ結果で、以前は機能していたものも機能し、そうでないものも機能しませんでした。
詳しくは:
- Log4cplus は -llog4cplusSU (log4cplusS でもテスト済み) を使用してリンクされ、git master からコンパイルされました
- GCC 4.9 – C++11 を使用
- プロジェクトをビルドするための Eclipse CDT
- Log4cplus はメインで初期化されます
- すべてのクラスは、同じコンパイラとフラグを使用してコンパイルされます
- 完全にクリーン アンド ビルドのプロジェクト
- すべてのファイルは同じ方法でコンパイル/リンクされます
- const / not const は効果がありません
の結果nm <NAME>.o | grep -i log4cplus
:
作業対象
未定義の参照がある場合: