Diese Antwort ist spät, aber ...
Ich denke, man beachten sollte, Trace statt Debug.WriteLine und/oder Trace.WriteLine verwenden. Mit TraceSources können Sie eine bessere Kontrolle über Ihre Protokollierung erreichen. Die Ebene jeder TraceSource kann wie auch das Ziel der TraceSource (TraceListener) gesteuert werden. Sie können Code wie folgt schreiben:
public class RectToSqlServer : IDatabaseUtilities
{
private static readonly TraceSource ts = new TraceSource("RectToSqlServer");
public void AddRectToDatabase(object record)
{
ts.TraceEvent(TraceEventType.Information, "record = {0}", record.ToString());
//Add record to database ...
}
}
public class RectToOracle : IDatabaseUtilities
{
private static readonly TraceSource ts = new TraceSource("RectToOracleServer");
public void AddRectToDatabase(object record)
{
ts.TraceEvent(TraceEventType.Information, "record = {0}", record.ToString());
//Add record to database ...
}
}
Jetzt können Sie die Protokollierung (Ebene, das Ziel, etc.) steuern für jede unabhängig Klasse. Beachten Sie außerdem, dass Sie nicht sowohl Trace.WriteLine als auch Debug.WriteLine hinzufügen müssen, um die Protokollierung von Debug- und Release-Builds zu erhalten. Wenn Sie TraceSources verwenden, können Sie ETW in Zukunft besser nutzen, da ab .NET ein ETWTraceListener verfügbar ist (vielleicht 3.5, sicherlich 4.0). ABER diese spezielle ETW-Funktionalität ist nur für Vista und spätere Betriebssysteme verfügbar.
Um System.Diagnostics Funktionen hinzuzufügen (hauptsächlich - vielleicht nur - wenn Sie über TraceSource protokollieren), sehen Sie sich Ukadc.Diagnostics an. Ukadc.Diagnostics fügt zu System.Diagnostics ziemlich coole Formatierungsfähigkeiten hinzu (ähnlich wie Sie es mit log4net und NLog tun können). Es gibt keine Codeabhängigkeit (installieren Sie einfach Ukadc.Diagnostics und fügen Sie Ihrer app.config eine Konfiguration hinzu). Ich muss sagen, dass ich denke, dass es wirklich cool ist.
Wenn Sie in einer wenig Arbeit setzen Sie Ihren Zugang zu Trace wickeln, siehe here für eine interessante Implementierung eines Trace Wrapper, der im Wesentlichen Trace die Fähigkeit, „erbt“ Logging-Konfiguration von „Vorfahren“ Trace gibt (wie, wie log4net- und NLog-Logger können Protokollierungseinstellungen übernehmen.
Danke RaYell, Entschuldigung für schlechte Probe, die ich gerade in Frage gestellt. – mamu