4

Pantheiosを使い始めたばかりですが、ロギング用の優れたライブラリのように感じます! おそらく、C++ 向けの最高のものでさえあります! 作者おめでとうございます!

ただし、ドキュメントにもすべてのフォーラムの投稿にも、呼び出し元のクラスと行番号をログに含める方法については何も見つかりませんでした。

be.fileをバックエンドとして使用しており、 fe.simpleの例を見て、カスタム フロント エンドを定義しました。これは と関係がありますか、PANTHEIOS_EXTERN_C const char PANTHEIOS_FE_PROCESS_IDENTITY[]それとも私は完全に間違った方向に進んでいますか?

4

2 に答える 2

5

これに対する答えは、ライブラリのダウンロードに含まれる FAQ ファイルにあります。次のヘッダーを持つ固定バックエンド DLL があり、ログ ファイルにクラス、関数、および行番号を含めることができます。

#include <pantheios/pantheios.hpp>
#include <pantheios/frontends/fe.N.h>
//#include <pantheios/frontends/fe.simple.h>
#ifndef PANTHEIOS_INCL_PANTHEIOS_H_TRACE
#define PANTHEIOS_TRACE_PREFIX         __FILE__ "(" PANTHEIOS_STRINGIZE(__LINE__) "): " __FUNCTION__ ": "
#endif /* PANTHEIOS_INCL_PANTHEIOS_H_TRACE */
#include <pantheios/trace.h>
#include <pantheios/inserters.hpp>
#include <pantheios/backends/bec.file.h>    // be.file header

ここで起こっていることは、上記で示したように、trace.h を含める前に PANTHEIOS_TRACE_PREFIX を再定義する必要があるということです。他のコード行は、#define の行先を示すためだけに含まれています。そして返信が遅くなり申し訳ありません。必要に応じて、固定バックエンド DLL プロジェクトをダウンロードしてブログに投稿できます。このプロジェクトは、単純なファイル ベースのログ記録用のソリューションで誰でも使用できます。そのプロジェクトに興味がある場合はコメントを残してください

Update 2/28/2010 12:53 AM CST: 参考までに、FAQ からの質問を次に示します。

Q9: 「Pantheios は、次のような関数を含むログ メッセージを生成する構成を提供しますか?

   log(informational, __FUNCTION__, ": my message");

それを書く必要はありません (またはコンパイラのサポートをチェックするラッパー)。" [2008 年 3 月 15 日]

A9: PANTHEIOS_TRACE_PREFIX を必要に応じて #define する必要があります。デフォルトでは__FILE__ "(" PANTHEIOS_STRINGIZE(__LINE__) "): "、フォーマットを与える です。<file>(<line>):

関数を含めるには、形式を持たせたいと言うことができます<file>(<line>): <func>:。これを実現するには、次のように定義します。

#include <pantheios/pantheios.h>
#define PANTHEIOS_TRACE_PREFIX         __FILE__ " " PANTHEIOS_STRINGIZE(__LINE__) ": " __FUNCTION__ ": "
#include <pantheios/trace.h>

pantheios/trace.h を含める前に定義する必要があることに注意してください。したがって、これを行うより安全な方法は次のとおりです。

/* File: myPantheiosRootHeader.h */
#include <pantheios/pantheios.h>

#ifdef PANTHEIOS_INCL_PANTHEIOS_H_TRACE
# error pantheios/trace.h must not be included before myPantheiosRootHeader.h
#endif /* PANTHEIOS_INCL_PANTHEIOS_H_TRACE */

#define PANTHEIOS_TRACE_PREFIX         __FILE__ " " PANTHEIOS_STRINGIZE(__LINE__) ": " __FUNCTION__ ": "
#include <pantheios/trace.h>
于 2010-02-28T06:51:14.170 に答える
0

その情報を自動的に含める方法は見つかりませんでした。もちろん、__LINE__ マクロを使用している場合は、ログ メッセージ自体に行番号を追加できます。ただし、これがどれほど移植性があるかはわかりません。

于 2010-02-26T18:27:23.657 に答える