web-dev-qa-db-fra.com

Implémenter un enregistreur personnalisé avec slf4j

Je veux implémenter un enregistreur personnalisé qui enregistre toutes les entrées de journal dans une base de données. Actuellement, mon application se connecte de cette façon (liaison slf4j et log4j):

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

Je ne sais pas comment procéder. Mon idée est d'implémenter une liaison de journalisation personnalisée en implémentant l'interface org.slf4j.Logger

Quelles seraient les prochaines étapes? Mon objectif est de ne pas changer le code actuel

Liens que j'ai considérés:

33
Martin Dürrmeier

cela devrait être assez facile. vous devrez implémenter vos propres Logger et LoggerFactory. vous n'aurez pas du tout à modifier le code existant.

après cela, vous devrez implémenter StaticLoggerBinder pour renvoyer la fabrique de votre enregistreur et le nom de la classe. si vous téléchargez le fichier zip slf4j, vous obtenez également la source de toutes les implémentations, jetez un œil au StaticLoggerBinder dans slf4j-log4j pour un exemple.

jetez un œil à ce lien pour plus de détails: http://www.slf4j.org/faq.html#slf4j_compatible

32
chris

Vous n'avez pas besoin d'écrire votre propre implémentation de journalisation, que diriez-vous de passer du framework de journalisation à logback ? Loback prend en charge la journalisation de la base de données de manière native. Lorsque vous utilisez l'API SLF4J les deux fois, votre code ne changera pas.

Jetez un oeil à la ch.qos.logback.classic.db.DBAppender . Si la disposition de table par défaut ne correspond pas à vos besoins, vous pouvez implémenter ch.qos.logback.classic.db.names.DBNameResolver pour personnaliser les noms de table et de coloum.

5
Matthias B