4

C#.Net2.0でLoggingApplicationブロックを使用しています。私のコードはエラー情報をフラットファイルに記録しています。msdnで説明されているように、リスナー、フォーマッター、カテゴリなど、必要なすべての構成をweb.configに設定しましたが、正常に機能しています。しかし、問題は、le.Messageプロパティに50文字を超える文字を入れることができないことです。私の場合、スタックトレースの長さは500文字を超えており、エラーが発生したときにフラットファイルにログインします。

LogEntryオブジェクトのMessageプロパティ内に配置できる文字の数に制限はありますか?または、スタックトレースをロガーフラットファイルに記録する他の方法はありますか?

これが簡単なコードです。

LogEntry le = new LogEntry();
le.Categories.Add("ErrorsToEventLog");
le.Categories.Add("ErrorsToLogFile");
le.Title = "Error message";
le.TimeStamp = System.DateTime.Now;
le.Severity = System.Diagnostics.TraceEventType.Error;
le.Message = "<text of error's stack trace>";
Logger.write(le);

構成設定

<configSections>
 <section name="loggingConfiguration"
type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings,
Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral,
PublicKeyToken=null" />

<section name="dataConfiguration"
type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,
Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral,
PublicKeyToken=null" />
</configSections>

これが私が使用したフォーマッターです。

<formatters>
<add template="Timestamp: {timestamp} Message: {message}" 
type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, 
Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0,
Culture=neutral, PublicKeyToken=null" name="Text Formatter" />
</formatters>

そして、ここにリスナーがいます、

<add fileName="Logs/ErrorLog_{Date}.log" 
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.
CustomTraceListenerData,
Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, 
PublicKeyToken=null" traceOutputOptions="None"
type="EnterpriseLibrary.Logging.Extensions.RollingFlatFileTraceListener,
EnterpriseLibrary.Logging.Extensions, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null" name="Custom TraceListener" initializeData="" />

カテゴリ

<categorySources>
<add switchValue="All" name="ErrorsToEventLog">
<listeners>
<add name="Formatted EventLog TraceListener" />
</listeners>
</add>
<add switchValue="All" name="ErrorsToLogFile">
<listeners>
    <add name="Custom TraceListener" />
</listeners>
</add>
</categorySources>
4

2 に答える 2

1

私の知る限り、ログメッセージにはそのような制限はありません。スタックトレースをメッセージにどのように設定しますか?

于 2010-08-31T11:48:49.773 に答える
0

分析が正しいと仮定して(今すぐ再確認するのは不便です)、実行している制限のないLogEntryのサブクラスを作成することを検討しましたか?

于 2010-08-31T11:52:13.447 に答える