2009-06-25 5 views
4

私は、Flexクライアントで発生するエラーをログに記録する手段を提供しようとしています。これは、単一のパラメータとしてLogMessageオブジェクトを取るSOAP Webサービスを提供することによって実現されます。クライアント側のエラー表面とLogClientError方法はlog4netのを介してエラーを記録した呼び出されるべきオブジェクトのプロパティをログ出力にマップできるようにlog4netを設定するにはどうすればよいですか?

public class LogMessage 
{ 
    public string Message { get; set; } 
    public string Exception { get; set; } 
    public string Version { get; set; } 
    public string User { get; set; } 
} 

この目的は、Flexクライアントによって移入されます。

[WebMethod()] 
public void LogClientError(LogMessage message) 
{ 
    rollingLogger.Error(message); 
} 

私の現在の仮定はlog4netのは、単純に渡されるオブジェクトに.ToString()を呼び出すことですので、現在、これは、LogMessageにクラスの完全修飾名を表示します。

をしかし、私が本当に欲しいものlog4netが必要な情報を正しく書き出すように、LogMessageクラスの各プロパティをパターンにマップします。私は典型的なアペンダー(DB、ファイル、SMTP)がすべてサポートされるような方法でこれを行いたいと思います。

オブジェクトのプロパティをログ出力にマッピングできるようにlog4netを設定するにはどうすればよいですか?

答えて

3

log4netには2つのパスがあります。最初に、LogMessageインスタンスのカスタムオブジェクトレンダラーを作成します。 the IObjectRenderer interfaceregister the implementationを実装する必要があります。

もう1つは、再利用可能なルートで、patternlayoutクラスをサブクラス化することです。カスタムパターンレイアウトは、レイアウトが着信メッセージオブジェクトに反映するために使用できる名前付けプロパティの特別な構文をサポートします。

0

LogMessageが部分的な場合は、LogMessageでToString()メソッドを作成できます。

関連する問題