En un entorno de producción, tengo el inicio de sesión establecido en "INFO" de forma predeterminada (usando log4net), y en este nivel registro la información suficiente para tener una buena posibilidad de diagnosticar cualquier error. Entonces, ¿qué es información "suficiente"? Bueno, eso depende de tu sistema. En nuestro sistema, registro los puntos de entrada y salida de los métodos más importantes, incluidos sus parámetros de entrada y los valores de retorno (a menos que sea una gran cantidad de datos). Estoy dispuesto a aceptar un 5-10% de gastos generales para el registro (pero debe medir esto).
Mi formato Perferred es la siguiente: entrada
Método:
-> MiMetodo (1, "arg1")
Método de salida:
< -MyMethod (1 " arg1 ") = verdadero
Las flechas significan que puedo ver fácilmente si esto es entrada o salida. Al incluir los argumentos y el valor de retorno obtengo los datos más críticos para diagnosticar errores. Solo tengo un punto de retorno de mis métodos, por lo que no tengo que preocuparme por los puntos de salida múltiples para mi registro.
Al ingresar/salir del método de registro, no tengo que registrar mucho más: si su código se descompone correctamente en métodos, esto documentará el flujo de ejecución a través de su aplicación.
No cometa el error de no registrar suficiente información porque le preocupa el rendimiento: mida esto para que esté contento con la sobrecarga, pero confía en que está iniciando sesión lo suficiente para diagnosticar fallas basadas puramente en la información eso está en el registro. Lo que no desea hacer es cambiar el inicio de sesión a más detalles después de su cliente ha informado de un error, y luego esperar que la falla ocurra nuevamente.
También uso un nivel de registro DEBUG que registra prácticamente todo. Esto solo se usa en desarrollo/prueba, o quizás en producción, pero solo después de consultar con el cliente.
Un blog reciente de un colega mío discutiendo solo esto: https://engblog.nextdoor.com/2015/08/05/dynamic-logging/ – Mikhail