0

私は Enterprise Library 5.0 を使用しています。私のタスクは、情報をデータベースに記録することです。このために、Enterprise Library Logging Application Block と Database Trace Listener を使用しました。

さて、数日後、Logging.LOG テーブルにログインするには、さらに情報が必要であることがわかりました。それらは、User_ID、Session_ID などです。

ビジネス要件により、LogEntry クラスの ExtendedProperty プロパティを使用して、この情報を XML 形式でログ テーブルの FormattedMessage 列に格納することはできません。Logging データベースのログ テーブルに、「User_ID」および「Session_ID」という名前の適切な列が必要です。

質問: カスタマイズされた情報をログ テーブルにプッシュするにはどうすればよいですか?

このために、「CustomTraceListener」と呼ばれるものを見つけました。ここでは、Write(string Message) と WriteLog(string Message) の 2 つのメソッドをオーバーライドする必要があります。

  • この CustomeTraceListener を使用してカスタム メッセージをログ テーブルにプッシュするにはどうすればよいですか?

  • Write メソッドは文字列型の単一のパラメーターを受け取ります。つまり、連結された文字列を取得して、別の情報に分割し、独自のコードを使用してデータベースにプッシュする必要がありますか?

誰かが CustomeTraceListener の実装例を --> データベースに送ってくれませんか

私を助けてください。

ありがとう、

スラジ

4

1 に答える 1

1

これに従って、カスタム トレース リスナーを作成します: http://msdn.microsoft.com/en-us/library/ff647545.aspx

次に、Fluent 構成を使用して次のようなことを行うことができます (コードは機能しませんが、アイデアが得られます)。

    var builder = new ConfigurationSourceBuilder();
    var serviceConfig = new NameValueCollection();
    serviceConfig.Add("Key", "data");
    builder.ConfigureLogging()
        .LogToCategoryNamed("General")
        .WithOptions.SetAsDefaultCategory()
        .SendTo.Custom<ServiceTraceListener>("ServiceTraceListener", serviceConfig)
        .FormatWith(new FormatterBuilder()
        .TextFormatterNamed("Text Formatter")
        .UsingTemplate("Timestamp: {timestamp}...{newline})}"));

    var configSource = new DictionaryConfigurationSource();
    configSource.Add(LoggingSettings.SectionName, builder.Get(LoggingSettings.SectionName));
    var cont = EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
    return cont.GetInstance<LogWriter>();

(コード ± から: CustomTraceListener および ConfigurationSourceBuilder を使用したエンタープライズ ライブラリ 5.0 ログ)

.UsingTemplate メソッド で使用できるデータの概要は次のとおりです: http://msdn.microsoft.com/en-us/library/microsoft.practices.enterpriselibrary.logging.configuration.textformatterdata.template(v=PandP. 50).aspx

このテンプレートは、CustomTraceListener TraceData オーバーライド メソッドで使用されています (MSDN のチュートリアルに従っている場合は、ここにリンクしています)。

次も参照してください: http://msdn.microsoft.com/en-us/library/ff664363(v=PandP.50).aspx 追加のフォーマット: http://msdn.microsoft.com/en-us/library/ff664562( v=PandP.50).aspx

于 2013-06-13T09:42:22.037 に答える