Trace-Switch

  • Themenstarter Themenstarter Spuuky
  • Beginndatum Beginndatum
S

Spuuky

Hallo,

ich habe ein Problem mit der Erstellung eines Log-Files über die Klasse TraceListener. Momentan kann ich ein File wie folgt erstellen. (Das Problem wird dann weiter unten beschrieben)

Ich beutze ein Object der Klasse Trace Switch, um Fehlermeldungen in ein Log-File zu schreiben:


>private static TraceSwitch _traceSwitch = new TraceSwitch
> ("myTraceSwitch","TraceLevel für Log-Ausgabe");
>
>...
>Trace.WriteLineIf(_traceSwitch.TraceError,"[Error] -
> Fehlermeldung...");


Meine App.confi sieht folgendermaßen aus:

><?xml version="1.0" encoding="utf-8" ?>
><configuration>
><system.diagnostics>
><switches>
><add name="myTraceSwitch" value="3" />
></switches>
><trace autoflush="true" indentsize="3">
><listeners>
><add name="MyListener"
> type="LGT.TraceListenerExt.FileTraceListener,TraceListenerExt"
>initializeData="ARI_LOG" />
></listeners>
></trace>
></system.diagnostics>
></configuration>

Der Trace-Switch starte ein object der Klasse LGT.TraceListener. Bei der Klasse LGT.TraceListener handelt es sich um
eine überladen Klasse der framework-Klasse TraceListener und sieht wie folgt aus:

>using System;
>using System.Diagnostics;
>using System.IO;
>using System.Text;
>using System.Messaging;
>
>
>namespace LGT.TraceListenerExt
>{
>public class FileTraceListener : TextWriterTraceListener
>{
>public FileTraceListener(Stream stream) : base(stream)>
>{
>}
>
>public FileTraceListener(String fileName) : base
>
> (fileName + DateTime.Now.ToString(FileNameSufix))
>{
>}
>
>public override void WriteLine(String message)
>{
>base.WriteLine(MsgFormatter.FormatMessage
> (message));
>}
>
>public override void Write(String message)
>{
>base.Write(MsgFormatter.FormatMessage
> (message));
>}
>
>static public String FileNameSufix
>{
>set { _filenameSufix = value; }
>get { return _filenameSufix; }
>}
>
>static protected String
> _filenameSufix = "_yyyy-MM-dd_HH-mm-ss";
>static protected StreamWriter_writer = null;
>
>private MessageFormatter MsgFormatter = new
>
> MessageFormatter();
>}
>
>
>public class MessageFormatter
>{
>public String FormatStringSufix
>{
>set { _formatStringSufix = value; }
>get { return _formatStringSufix; }
>}
>
>public String FormatStringPrefix
>{
>set { _formatStringPrefix = value; }
>get { return _formatStringPrefix; }
>}
>
>public String FormatMessage(String message)
>{
>return DateTime.Now.ToString
> (FormatStringPrefix) + message;
>}
>
>protected String_formatStringPrefix = "[yyyy-
> MM-dd HH:mm:ss] ";
>protected String_formatStringSufix = "";
>}
>}

Nun zum eigentlichen Problem: Über den Trace-Switch kann dem Konstruktor der Klasse LGT.TraceListener der Pfad und der Dateiname des zu erstellenden Text-Files mitgegeben werden. Mein Problem ist, dass dieses Text-File an unterschiedlichen Stellen abgelegt werden soll. Je nach Fallunterscheidung muss der Pfad also
variert werden können. Nun stehe ich aber vor dem Problem: WIE?

Gibt es eine Möglichkeit, den Parameter "initializeData" in der App.confi variabel zu übergeben, oder muß ich meine Klasse
LGT.TraceListener nochmal in irgeneiner Form überladen? Wenn ja, wie


Wäre echt super, wenn Ihr mir weiterhelfen könnte!

Gruß Spuuky
 
Zurück