Estamos utilizando la combinación SLF4J + Logback en nuestro proyecto desde hace un tiempo y estamos muy contentos con él, pero nuestra estrategia de registro es bastante simple, utilizando registradores directos basados en clases y sin elementos sofisticados como MDC o Markers.
Lo que quiero saber es si alguien en la comunidad realmente usa estas características y cómo se usan para mejorar el registro / filtrado.
Estoy especialmente interesado en dónde, por qué y cómo usaría [1] Marcadores para iniciar sesión. Me parecen una característica bastante clara para agregar contexto semántico al registro; por ejemplo, si bien una clase puede manejar múltiples preocupaciones, uno puede usar marcadores específicos de tareas / preocupaciones para discriminar las declaraciones de registro.
Cuáles pueden ser las mejores prácticas, convenciones o estrategias para crear y usar marcadores en el registro.
Actualización: supongo, lo que realmente busco no es tanto por qué usar marcadores, sino más bien la parte del cómo : ¿hay algunas buenas prácticas para nombrar marcadores (por ejemplo, usar texto sin formato con espacios o guiones / guiones bajos / signos de puntuación delimitados por nombres de estilo de palabra clave ), debería haber algún tipo de grupo de "nombres estándar", nombrando cosas basadas en las funciones comerciales. Probablemente pueda resolver las preguntas por mí mismo, pero si quiero usar estas características sistemáticamente y presentarlas a un equipo de desarrolladores, tiene sentido tener un conjunto formal de pautas en torno a ...
[1] - Al preguntar cómo usar marcadores, en realidad no estoy preguntando cómo usar API (es realmente bastante sencillo), sino que me refiero al nivel más general de cómo se configuraría el inicio de sesión utilizando marcadores de manera consistente
Primero, MDC.
MDC es realmente útil en un entorno donde tiene una "entidad" que está asociada con algún comportamiento. Un ejemplo típico: usuario que interactúa con una aplicación web. Entonces, supongamos que tiene muchos usuarios jugando con su aplicación web. Con MDC, puede rastrearlos fácilmente sin demasiados problemas. Ejemplo simplificado:
Aquí, está utilizando MDC en dos lugares: para nombre de usuario y para ID de sesión. De esta manera, puede seleccionar fácilmente la sesión de un usuario para ver todo lo que ha estado haciendo.
En segundo lugar, los marcadores.
Los marcadores generalmente se usan para circunstancias "especiales", como el envío de un correo electrónico a un administrador por algunos errores críticos graves. No todos los errores siempre caen en la misma categoría; algunos tienen que ser tratados de manera apropiada.
O, cuando un usuario abandona su servicio, generalmente va a un registro INFO, pero también puede usar un marcador para tales casos, si desea que eventos como este vayan en un archivo de registro separado, para que pueda monitorearlo más fácilmente para la recopilación estadística de usuarios que abandonan.
Regla de oro:
fuente
Los marcadores se pueden usar para colorear o marcar una sola declaración de registro. Lo que hagas con estos colores, es decir, marcadores, depende totalmente de ti. Sin embargo, dos patrones parecen ser comunes (el primero más común que el segundo) para el uso de marcadores.
Disparo : se puede indicar a algunos usuarios que realicen una acción en presencia de un determinado marcador. Por ejemplo,
SMTPAppender
se puede configurar para enviar un correo electrónico cada vez que se marca un evento de registro con elNOTIFY_ADMIN
marcador, independientemente del nivel de registro. Consulte la activación basada en marcadores en la documentación de inicio de sesión. También puede combinar niveles de registro y marcadores para la activación.Filtrado : podría, por ejemplo, colorear / marcar todos sus registros relacionados con la persistencia (en varios y varios archivos de clase) con el color "DB". Luego puede filtrar por "DB": deshabilite el registro, excepto las declaraciones de registro marcadas con DB. Consulte el capítulo sobre filtros en la documentación de inicio de sesión para obtener más información (busque MarkerFilter).
fuente
Al igual que un apéndice, si está utilizando logstash y tiene habilitado el registro json, existe otro uso potencial de Marker: para registrar variables para asociarlas con un mensaje de registro específico. Esto es más coherente y más fácil de analizar que incluirlo en el cuerpo del mensaje. Muy útil, si se adapta a su caso de uso.
Ver detalles aquí:
https://github.com/logstash/logstash-logback-encoder#loggingevent_custom_event
fuente