Entwickler-Ecke

Sonstiges (.NET) - Trace.Listeners maximale Dateigröße festlegen


m.keller - Mo 24.11.14 12:09
Titel: Trace.Listeners maximale Dateigröße festlegen
Hallo Entwickler,
ich möchte ein Trace für Debugging schreiben lassen.
Dies wird auch schon super erledigt.
Problem ist nun das mir bei einem Dauerlauf der Software viel zu groß wird.
Wie kann ich bestimmen wie Groß die Datei maximal werden darf.
Oder gibt es eine Möglichkeit die Datei als ein Ring-speicher zu verwenden?

So sieht bei mir der teil des Quelltextes aus:

C#-Quelltext
1:
2:
3:
4:
5:
TraceListener traceListener = new TextWriterTraceListener("blablabla.log");
             //optional logging filterings: 
            
            Trace.Listeners.Add(traceListener);
            Trace.AutoFlush = true;


Danke schon mal


Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Mo 24.11.2014 um 11:19


Th69 - Mo 24.11.14 12:30

Hallo,

du könntest den FileLogTraceListener [http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.logging.filelogtracelistener%28v=vs.110%29.aspx] benutzen, s.a. What the best rollover log file tracelistener for .NET [http://stackoverflow.com/questions/156575/what-the-best-rollover-log-file-tracelistener-for-net].

Alternativ selber einen TraceListener implementieren, s. z.B. Rolling over TextWriterTraceListner logs [http://www.davebost.com/2004/04/30/rolling-over-textwritertracelistner-logs].


m.keller - Mo 24.11.14 13:04

ist das nicht eine VB Class?


Ralf Jansen - Mo 24.11.14 13:46

Sie ist eine Net Klasse wie jede andere auch egal in welcher Sprache sie geschrieben ist.
Das sie im VisualBasic Namespace liegt hat vermutlich eher historische Gründe.


m.keller - Mo 24.11.14 14:58

So habe das mal umgesetzt.
Ist das soweit richtig oder muss ich noch etwas anders machen?


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
 FileLogTraceListener listener = new FileLogTraceListener();
            listener.BaseFileName = "blablabla.log";
            listener.MaxFileSize = 209715200//200 MB
            listener.AutoFlush = true;
            listener.Location = LogFileLocation.ExecutableDirectory;
            
            Trace.Listeners.Add(listener);