Ya no tienes que indagar más por internet ya que has llegado al lugar perfecto, contamos con la solución que necesitas y sin complicarte.
Solución:
Por supuesto, la mejor práctica es poner el registro donde lo necesite. 🙂 Pero en su ejemplo, la mejor práctica sería no usar el registro en absoluto.
El registro generalmente no es bueno para rastrear el flujo del programa (que es lo que parece que está tratando de hacer), a pesar de la existencia de un TRACE
nivel en una gran cantidad de marcos de registro. El mejor uso del registro es registrar datos que fluye a través del sistema, particularmente los datos que causan problemas.
Al registrar datos, los datos deben registrarse en el contexto en el que se puedan explicar mejor. eso suele ser
- al comienzo de una función (registrar las entradas),
- al final de una función (registro de salidas o temporización), o
- donde se detecta un error.
Para averiguar dónde un fatal se produce un error debe tener un controlador de errores que esté informado del error fatal y registre un seguimiento de la pila que muestre dónde ocurrió el error. (Los lenguajes más modernos hacen esto de forma predeterminada y los más antiguos ya tienen formas de habilitarlo). No debe intentar registrar la ruta de ejecución en un intento de localizar el problema.
Las prácticas que estoy dando aquí no provienen de ninguna fuente, sino las que uso y he encontrado más efectivas durante muchos años de uso.
Métodos de inicio de sesión
Un método es un bloque de código que tiene un propósito determinado. Mantenga el registro de cada método en el propio método. De esa forma, cuando reutilice el método de otros lugares, no tendrá que agregar registradores en cada lugar. Si el método resulta ser una utilidad que se llama desde muchos lugares, reduzca el nivel del registrador o la prioridad del registrador para ese prefix.
Usar MDC/ID de solicitud/Nombre de subproceso
Para rastrear el flujo de la solicitud o el origen de la llamada, establezca un parámetro en el registrador o use el nombre del subproceso para que todos los registros posteriores tengan la etiqueta y sigan los registros de esa etiqueta. En general, es mejor establecer las etiquetas en el registrador tan pronto como se reciba la solicitud.
Para evitar registros duplicados
Detecte excepciones y registre en una cierta etapa lógica en su código. Por ejemplo, en una aplicación web con la siguiente pila Acción/JSP/servicio web, etc. -> llamada de módulo -> módulos auxiliares -> Util -> biblioteca.
Aquí iniciaría sesión en mi nivel de llamada de módulo (correspondiente a algúnProceso() en su código). Todas las llamadas internas serían llamadas de nivel DEBUG colocadas dentro de los métodos. Alternativamente, puede registrar los módulos auxiliares, etc. con un filtro de registro más alto.
El registro es un asunto muy subjetivo, y tiene más que ver con decidir una forma y apegarse a ella en todas partes. No hay talla única solución. Debe averiguar su nivel de detalle frente a rendimiento frente a señal a ruido en el registrador que está utilizando ajustando los parámetros poco a poco con el tiempo.
Si eres capaz, eres capaz de dejar una división acerca de qué le añadirías a esta reseña.