2009-05-15 22 views
4

私はという既存の .netサービスを持っており、メッセージをログファイルに書き込むように設定したいと考えています。私は、サービス設定で、次に追加:.netリスナーでログファイルをローテーションする

<system.diagnostics> 
    <sources> 
    <source name="My.Service" switchValue="All"> 
     <listeners> 
     <add name="text" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\log.txt" traceOutputOptions="Timestamp"/> 
     </listeners> 
    </source> 
    </sources> 
</system.diagnostics> 

問題は、ログファイルがすぐに非常に大きくなるので、それはログローテーションのいくつかの並べ替えを設定することが可能です場合、私は思っていました。
プロセスはファイルの書き込みをロックするので、手動で回転させることはできません。たとえば、少なくともファイルを名前を変更して、サービスを停止して再起動する必要はありません。

ありがとうございます。

答えて

8

私はこのトリックを行うと思うのはFileLogTraceListenerです。毎日または毎週の間隔に設定できます。

十分でない場合は、独自のtracelistenerを作成し、TraceListenerから継承し、書き込みメソッドをオーバーライドする必要があります。

+2

ありがとう、探していたが、私はそれを完全に逃した!私はなぜSystem.Diagnosticsの代わりにMicrosoft.VisualBasicアセンブリで定義されているのだろうと思います。とにかく、回転ログはかなり一般的な必要性だと思います。 –

0

あなたがそのようファイル名に組み込まれたログローテーションを持ってもらえ:

"C:\ log.txtという"

次のようになります。

"C:\ logDDMMYYYY.txt"

この方法では、ログは自動的に1日の終わりに新しいファイルにロールオーバーされます。

0

.NET用の無料で使いやすいロギングライブラリlog4netがあります。このライブラリにはすでにログの回転が含まれています。

そうしないと、ファイルのロックを解除したり、新しいファイルに自動的にログするサービスが提供されます。

+0

有望ですが、これらのロガークラスをトレースリスナーとして構成できますか? –

+0

TraceAppenderクラスが含まれています。良い点は、あなたはいつもライブラリを拡張し、独自のアペンダを書くことができます(=どこにどのようにログが書き込まれるか) – Scoregraphic

+0

oh..ライブラリが別の設定ファイルを通して完全に設定可能であることを忘れた – Scoregraphic

関連する問題