我想实现一个自定义记录器,它将所有日志条目记录到数据库中。 目前我的应用程序以这种方式记录(slf4j和log4j绑定):
private static final Logger logger = LoggerFactory.getLogger( MyClass.class );
我不知道该怎么办。 我的想法是实现自定义日志记录绑定 通过实施org.slf4j.Logger Interface
接下来的步骤是什么? 我的目标是不改变当前的代码
我考虑的链接:
答案 0 :(得分:32)
应该相当容易。您需要实施自己的Logger
和LoggerFactory
。您根本不需要更改现有代码。
完成此操作后,您需要实现StaticLoggerBinder
以返回您的记录器工厂和类名。如果您下载了slf4j zip文件,那么您也可以获得所有实现的源代码,只需查看slf4j-log4j中的StaticLoggerBinder即可获得示例。
答案 1 :(得分:5)
您不必编写自己的日志记录实现,如何将日志记录框架切换到logback? Loback支持本地记录到数据库。当您使用SLF4J API时,您的代码都不会改变。
看看ch.qos.logback.classic.db.DBAppender。如果默认表格布局不符合您的需求,您可以实施ch.qos.logback.classic.db.names.DBNameResolver来自定义表格和名称。