En general
- Si registrar los valores DateTime (no estamos hablando de campos de cabecera de fecha y hora de los marcos de registro) asegurarse de que los registre en un formato significativo. "ToString()" generalmente no es suficiente si necesita información sobre Local vs. Utc o sobre milisegundos (utilizo "aaaa-MM-dd HH: mm: ss.fff zzz", YMMV)
- Si registra excepciones, ir por "ToString()" en lugar de cualquier otra cosa. Controversial tal vez, pero mira here por razones.
Acerca de información detallada o detallada, como ya han dicho otros, hay que tener cuidado. No se trata solo de que las personas tengan derecho a leer los registros de producción obteniendo más información de la necesaria, sino que piense en el caso de que cualquier intruso en un sistema pueda obtener información valiosa para registros excesivamente detallados (por lo que no registraría un conjunto de los permisos de los usuarios con el error de que no tiene uno en particular, se sugirió en otra respuesta).
Puede depender de su entorno o cliente lo que se considera sensible, pero los ejemplos son: - Entrada de usuario real en los mensajes de error. - Conjuntos de permisos de usuario, etc. - sentencias SQL, especialmente con los parámetros reales - solicitud XML/estructuras de respuesta
Encontrando la granularidad derecho de información de registro es siempre una solución de compromiso entre la cantidad de información registrada, el rendimiento que cuesta no sólo escribir, sino también a producir esta información en código y la sensibilidad de esa información. Y esa es la razón por la cual cualquier sistema de registro serio tiene "niveles" o "categorías".
Puede registrar información potencialmente delicada en un "nivel" o "categoría" que se puede activar durante el desarrollo pero sin producción. Si realmente desea exagerar, puede escribir una entrada EventLog cuando su aplicación detecte que dicho registro está habilitado, para que no se "filtre" durante la producción.
Finalmente, considere utilizar un marco de trabajo de registro que permita cambiar esos niveles o categorías durante el tiempo de ejecución. De esta forma, puede habilitar más información si es necesario, de forma controlada, sin interrumpir el trabajo de la aplicación o restablecer una situación que desea inspeccionar por la necesidad de reiniciar primero la aplicación.
ver también http://stackoverflow.com/questions/1902133/what-are-the-best-practices-for-including-logging-using-log4net –