0

I have the following statements:

static Logging::Logger* common_logger = new Logging::Logger(Logging::Logger::LEVEL);

In the Logger.h i have

  class Logger {
public:

    enum LEVEL {
        Debug,
        Warning,
        Notification,
        Error
    };
  }

I have included the file Logger.h inside my another class as :

    Logging::log(CustomDialog::logger, Logging::Entry, CustomDialog::CLASSNAME, "CustomDialog");

I need to know if this is the right way to do the reason why i am doing this is to get logs based upon the level.

Regards,

4

2 に答える 2

4

Log4cxxを見てみましょう。これは使いやすく、C++ のロギング フレームワークに必要なほぼすべての機能が含まれています。拡張可能で、構成ファイルを使用して構成でき、すぐに使用できるリモート ロギングもサポートしています。

于 2012-09-13T12:34:59.097 に答える
1

ACE_DEBUG を使用できます。これは昔ながらの (ala printf) ようですが、スレッドセーフで信頼性が高く、完全に構成可能です (ログファイル、stdout などを使用します)。もちろん、 libACE(Adaptive Communication Framework)に対してリンクする必要がありますが、それは開発パッケージは、最近ではデフォルトで多くの Linux ディストリビューションで簡単に利用できます。が言及した C++ ロギング ライブラリの投稿からリストを調べてきましたが、Alsほとんどの人が多くのフレームワークでメモリ リークに遭遇しているようで、boost::Log はまだ公開されていません。

もう 1 つのポイントは、ほとんどのログ ライブラリがストリームを使用していることです。たとえば、次のようになります。

// from thread 1
mlog(mlog::DEBUG) << "Debug message goes here" << mlog::endl;

// from thread 2
mlog(mlog::INFO) << "Info message goes here" << mlog::endl;

マルチスレッド環境では期待どおりに動作しませんが、ACE はそこで正しく動作します。

上記の出力は次のようになります。

[thread1 | 12:04.23] Debug me[thread2 | 12:04.24] Info message goesssage goes herehere
于 2012-09-13T13:04:53.530 に答える