私の現在の任務は、Delphi XE 3 で使用するロギング システムを評価することなので、CodeSite や SmartInspect だけでなく、オープンソース ソリューションについても理解しようとしています。現在、私は Log4Delphi について知ろうとしていますが、少量のドキュメントに加えて、Delphi XE3 で Log4Delphi を使用すると、次の問題が発生しました。
基本的なログ機能は問題なく動作します。しかし、レイアウト オプションを使用してログ メッセージにタイムスタンプなどの情報を追加しようとしたときに、問題が発生しました。
dpr ファイル内に構成ファイルをロードするために、次のステートメントを使用します。
TConfiguratorUnit.doPropertiesConfiguration(ExtractFileDir(Application.ExeName)+ '\MyLoggerconfig.properties');
最初は、構成ファイルのパスに問題があるのではないかと疑ったので、GetCurrentDir メソッドを使用する別のメソッドを作成しました。しかし、すぐに構成ファイルが機能していることに気付きました。
構成ファイルでどのようなレイアウトを選択しても、アペンダーは適切なフォーマットを使用せずにログ メッセージを書き続けます。Log4Delphi のユーザー ガイドに書かれているとおりに実行しようとしました。しかし、現在、なぜそれが適切に機能しないのかを理解できません。
var
Form5: TForm5;
logger: TLogger;
layout : TLayout;
implementation
ロガーを使用するために、上記のように宣言しました。
logger := TLogger.GetInstance;
logger.SetLevel(TLevelUnit.ALL);
これら 2 つの方法を使用して、メインフォームの oncreate イベントでロガーを初期化します。
log4delphi.appender.fileAppender.layout=TPatternLayout
log4delphi.appender.fileAppender.layout.Pattern=%d{dd mmm yyyy hh:nn:ss:zzz} [%5p] %m%n
上記でわかるように、TPatternLayout のデフォルトを選択しており、ログ メッセージにはタイムスタンプなどのさまざまな情報が含まれているはずです。しかし、代わりに次のようになります。
WARN - Value of zahl1 2
WARN - Value of zahl2 4