0

シーケンシャル ファイルの無制限のセットを生成したいSystem.Diagnostics.EventSchemaTraceListenerので、TraceLogRetentionOption.UnlimitedSequentialFiles. ただし、トレース出力は、複数の順次ファイルではなく、1 つのファイルに書き込まれました。

この特定のログ保持オプションの使用に関する公式または非公式のドキュメントまたはコード サンプルはありますか? それに失敗した場合、以下のコードは何らかの形で間違っていますか?


魔法の設定を減らすために、コードですべてを行います。初期化されるはずの方法は次のとおりです

TraceSource ts = new TraceSource("My trace source", SourceLevels.All);
SourceSwitch sourceSwitch = new SourceSwitch("SourceSwitch", "Verbose");
ts.Switch = sourceSwitch;
ts.Listeners.Add(new System.Diagnostics.EventSchemaTraceListener(
  "event.log", // "file name"
  "eventschema", // "name"
  1024, // buffer in bytes - I set this to be <= maximum file size
  TraceLogRetentionOption.UnlimitedSequentialFiles,
  1024); // max. file size in bytes - very small to illustrate the concept

そして、私はそれに数回ログインします:

for (var i = 0; i < aFew; i++) {
  ts.TraceData(
    TraceEventType.Information, // trace level
    100, // event ID: arbitrary integer
    "some data to output");
}

単一のevent.logファイルが作成され、期待されるすべての情報が含まれていることを確認しましたTraceLogRetentionOptionが、単一のファイルのサイズが指定された最大 1kB を超えているため、尊重されていません。

私は何を間違っていますか?

4

2 に答える 2

1

出力されるメッセージのサイズが指定したサイズを超える場合、課すファイル サイズの制限はしきい値にすぎません。MSDN の MaximumFileSizeProperty ページを引用:

プロパティ値は、コンストラクターの maximumFileSize パラメーターまたは構成ファイルの maximumFileSize 属性によって設定されます。パフォーマンス上の理由から、最大ファイル サイズを 1024 バイトの倍数に設定する必要があります。MaximumFileSize プロパティ値は絶対値ではありません。これは、最後のメッセージのサイズまで超えることができるしきい値です。

于 2015-03-11T05:34:45.537 に答える