2010-04-16 24 views
24

Deseo implementar un registrador personalizado que registra todas las entradas de registro en una base de datos. Actualmente mi aplicación registra de esta manera (slf4j y log4j vinculante):Implementar registrador personalizado con slf4j

private static final Logger logger = LoggerFactory.getLogger(MyClass.class); 

No estoy seguro de cómo proceder. Mi idea es implementar un enlace de registro personalizado mediante la implementación de org.slf4j.Logger Interface

¿Cuáles serían los próximos pasos? Mi objetivo es no cambiar el código actual

Enlaces I considerados:

+0

Logback (http://logback.qos.ch): la implementación SLF4J nativa puede iniciar sesión en la base de datos. –

+0

@ Michał Mech, * native *? –

+0

@Bruno Reis, sí. Logback implementa de forma nativa la API SLF4J. –

Respuesta

25

Debe ser bastante fácil. Necesitará implementar su propio Logger y LoggerFactory. no tendrá que cambiar el código existente en absoluto.

Después de hacer eso, necesitará implementar StaticLoggerBinder para devolver la fábrica de su registrador y el nombre de clase. si descarga el archivo zip slf4j, también obtendrá el origen para todas las implementaciones, solo eche un vistazo al StaticLoggerBinder en slf4j-log4j para ver un ejemplo.

echar un vistazo a este enlace para obtener más información: http://www.slf4j.org/faq.html#slf4j_compatible

+0

Gracias oedo! También es posible usar log4j en mi marco de registro, p. solo escribir errores y advertencias en la Base de datos y usar log4j para el resto? El problema es que tengo 2 enlaces que http://www.slf4j.org/codes.html#multiple_bindings –

+0

por el momento parece que un apilador log4j personalizado es lo que estoy buscando, así que advierta el error y el nivel de advertencia va a mi appender personalizado mientras el resto permanece en él está (configurado en log4j.xml) –

+0

seguro, supongo que podría escribir su registrador personalizado para que reenvíe las solicitudes pertinentes a log4j. de nuevo, eche un vistazo a la fuente de slf4j-log4j para que comience :) – oedo

4

Usted no tiene que escribir su propia aplicación de registro, ¿qué hay de cambiar el marco de registro a logback? Loback admite el inicio de sesión en la base de datos de forma nativa. A medida que utiliza la API SLF4J, su código no cambiará en ambas ocasiones.

Eche un vistazo a ch.qos.logback.classic.db.DBAppender. Si el diseño de la tabla predeterminada no se ajusta a sus necesidades, puede implementar ch.qos.logback.classic.db.names.DBNameResolver para personalizar los nombres de tabla y coloum.

Cuestiones relacionadas