¿Has visto un apéndice que iniciaría sesión en archivos separados basados ??en NDC en Log4j? [cerrado]

StackOverflow https://stackoverflow.com/questions/840465

  •  20-08-2019
  •  | 
  •  

Pregunta

Tenemos solo un número muy pequeño de clientes (menos de 50) y nos gustaría que cada uno tenga su propio archivo de registro separado en el que va toda su información de registro del lado del servidor. Sé que podría usar NDC y filtros para dirigir las declaraciones de registro a diferentes archivos usando los apéndices estándar en Log4j, pero eso requeriría un poco más de configuración (para crear registradores para todos los clientes existentes) y no acomodaría automáticamente la adición de un nuevo cliente en el sistema.

¿Alguna vez ha visto un apéndice que dividiría las declaraciones de registro para separar los archivos en función del valor Log4j NDC? Me imagino que podría construir un nuevo apéndice para hacerlo, pero no puedo decir que quiera si puedo obtener algo que ya funciona y funciona bien.

¿Fue útil?

Solución

SiftingAppender que se envía con logback (sucesor de log4j) está diseñado precisamente para manejar esta situación.

Como su nombre lo indica, un SiftingAppender se puede usar para separar (o tamizar) el registro de acuerdo con un atributo de tiempo de ejecución dado. Por ejemplo, SiftingAppender puede separar los eventos de registro de acuerdo con las sesiones del usuario, de modo que los registros generados por cada usuario vayan a archivos de registro distintos, un archivo de registro por usuario. Por ejemplo, SiftingAppender puede separar los eventos de registro en archivos de registro distintos, un archivo por usuario.

La documentación para SiftingAppender contiene un ejemplo para separar registros basados ??en la identificación del usuario .

Otros consejos

No conozco ningún apéndice estándar o incluso de terceros que pueda hacer esto, y si bien está en lo correcto al escribir el suyo, me inclinaría a usar uno de los apéndices de archivo estándar (enrollado o no) y usar una herramienta que puede filtrar líneas de texto (es decir, excluir cualquier línea que no coincida con un patrón de la vista) para leer el registro. La mayoría de los editores que pueden filtrar también pueden configurar conjuntos de filtros para que pueda reutilizar los patrones existentes. No hablaré sobre qué editor usar, ya que ni siquiera sé qué sistema operativo está usando y cada uno tiene sus propias preferencias.

Parece que quiere un tipo de elemento de archivo múltiple, donde le da una parte de un nombre de archivo y el resto se completa con el NDC. No estoy al tanto de algo como esto. Probablemente tendrías que rodar el tuyo.

Si enrollas el tuyo, probablemente quieras crear un Appender que internamente use un Map de RollingFileAppender s creado dinámicamente. Sin embargo, no sé si un Appender tiene acceso al NDC. Probablemente sea una tarea no trivial.

Nunca conocí a ese apéndice también, pero no creo que sea un gran problema escribir el tuyo. Si desea hacerlo usted mismo, mire AppenderSkeleton , lo mínimo que tendrá que hacer es anular el método append (..). Cuando se llamará a su appender, obtendrá un evento completamente formado que contendrá todo lo necesario, incluido NDC. Haga lo que quiera con él. Creo que MDC (contexto de diagnóstico mapeado) en su caso es una alternativa viable, es más flexible en mi humilde opinión.

Si está buscando una solución comercial, mire logFaces , fue diseñado para manejar similares situaciones Divulgación : soy el autor de este producto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top