35

我想实现一个自定义记录器,它将所有日志条目记录到数据库中。目前我的应用程序以这种方式记录(slf4j 和 log4j 绑定):

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

我不确定如何进行。我的想法是通过实现org.slf4j.Logger 接口来实现自定义日志绑定

接下来的步骤是什么?我的目标是不更改当前代码

我考虑过的链接:

4

2 回答 2

37

这应该相当容易。您需要实现自己的LoggerLoggerFactory. 您根本不必更改现有代码。

之后,您需要实现StaticLoggerBinder以返回您的记录器工厂和类名。如果您下载 slf4j zip 文件,那么您也可以获得所有实现的源代码,只需查看 slf4j-log4j 中的 StaticLoggerBinder 作为示例。

查看此链接了解详情:http ://www.slf4j.org/faq.html#slf4j_compatible

于 2010-04-16T14:57:07.503 回答
7

您不必编写自己的日志实现,将日志框架切换到logback怎么样?Loback 支持本地记录到数据库。当您两次使用 SLF4J API 时,您的代码不会改变。

看看ch.qos.logback.classic.db.DBAppender。如果默认的表格布局不符合您的需求,您可以实现ch.qos.logback.classic.db.names.DBNameResolver来自定义表格和列名。

于 2013-05-28T07:42:16.027 回答