Use log4net. Seriamente.
Al utilizar una biblioteca estándar y ubicua, recibe orientación de personas que han pasado mucho tiempo pensando en este problema. La solución es que la mayoría de las bibliotecas de registro tienen varios niveles de registro.
En log4net por ejemplo que puedo hacer
ILog log = LogManager.GetLogger("some logger");
log.Debug("some debugging info");
log.Info("some message meaningful in the domain");
log.Warn("something might be occurring that merits your attention");
log.Error("Everything just went to hell")
El administrador de la aplicación puede entonces establecer diferentes niveles de registro que está interesado en ver. Es posible incluso permitirle cambiar esta configuración en tiempo de ejecución.Como cuestión de hecho, con una sólida biblioteca de registro como log4net puede dirigir diferentes niveles de registro de diferentes fuentes a diferentes appenders. Por ejemplo, puede tener un archivo continuo con todos los mensajes de la última semana almacenados en el disco duro, toda la información, advertencia y mensajes de error que no se originan en la capa de acceso a datos ingresada en una base de datos, y todos los errores enviados a usted por correo electrónico
Creo que lo que describes cae muy claramente bajo el nivel de "depuración".
Puede, por supuesto, implementar niveles de registro por su cuenta, pero si alguien que utiliza su biblioteca está interesado en ver toda la información de depuración, tendrá que aprender su sistema, además de cualquiera que esté usando. Mejor estandarizar.
Así que las mejores prácticas:
- usar niveles diferentes de registro.
- No mueva su propio marco de trabajo de registro, use log4net (que realmente es en este día y edad bastante estándar) o al menos entlib logging block de Microsoft.