この応答は遅いですが...
Debug.WriteLineやTrace.WriteLineではなくTraceSourcesの使用を検討する必要があると思います。TraceSourcesを使用すると、ロギングをより高度に制御できます。各TraceSourceのレベルは、TraceSourceの宛先(TraceListener)と同様に制御できます。次のようなコードを書くことができます:
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 ...
}
}
これで、各クラスのロギング(レベル、宛先など)を個別に制御できます。また、デバッグビルドとリリースビルドの両方でログを取得するために、Trace.WriteLineとDebug.WriteLineの両方を追加する必要はないことに注意してください。TraceSourcesを使用すると、.NET以降(おそらく3.5、確かに4.0まで)に利用可能なETWTraceListenerがあるため、将来ETWを使用するのに適した位置になります。ただし、この特定のETW機能は、Vista以降のOSでのみ使用できます。
System.Diagnosticsに機能を追加するには(主に、TraceSourceを介してログを記録する場合のみ)、Ukadc.Diagnosticsを参照してください。Ukadc.Diagnosticsは、System.Diagnosticsに非常に優れたフォーマット機能(log4netおよびNLogで実行できる機能と同様)を追加します。コードの依存関係はありません(Ukadc.Diagnosticsをインストールし、app.configに構成を追加するだけです)。本当にかっこいいと思います。
TraceSourcesへのアクセスをラップするために少し作業を加えたい場合は、TraceSourcesに「祖先」TraceSourcesからロギング構成を「継承」する機能(log4netやNLogロガーなど)を本質的に提供するTraceSourceラッパーの興味深い実装についてはこちらをご覧ください。ロギング設定を継承できます)。