Esta respuesta es tarde, pero ...
Creo que se debe considerar el uso TraceSources en lugar de Debug.WriteLine y/o Trace.WriteLine. Con TraceSources, puede lograr un mayor nivel de control sobre su registro. El nivel de cada TraceSource se puede controlar al igual que el destino de TraceSource (TraceListener). Puede escribir código como este:
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 ...
}
}
Ahora, se puede controlar la explotación forestal (nivel, destino, etc.) para cada clase de forma independiente. Además, tenga en cuenta que no tiene que agregar Trace.WriteLine y Debug.WriteLine para obtener el inicio de sesión tanto en versiones de depuración como de versiones. El uso de TraceSources lo colocará en una buena posición para usar ETW en el futuro, ya que hay un ETWTraceListener disponible comenzando en .NET (quizás 3.5, sin duda por 4.0). PERO esta funcionalidad particular de ETW solo está disponible en Vista y sistemas operativos posteriores.
Para agregar capacidad a System.Diagnostics (principalmente - tal vez solo - si se registra a través de TraceSource), mira Ukadc.Diagnostics. Ukadc.Diagnostics agrega una capacidad de formateo muy buena (similar a lo que puede hacer con log4net y NLog) a System.Diagnostics. No hay dependencia del código (solo instale Ukadc.Diagnostics y agregue alguna configuración a su app.config). Debo decir que creo que es genial.
Si usted quiere poner en un poco de trabajo para envolver su acceso a TraceSources, ver here para una aplicación interesante de un envoltorio TraceSource que esencialmente da TraceSources la capacidad de "heredar" configuración de registro de TraceSources "antepasado" (como la forma de log4net y NLog Loggers pueden heredar la configuración de registro).
Gracias RaYell, perdón por la mala muestra que acabo de inventar en cuestión. – mamu