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:
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
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.