代码之家  ›  专栏  ›  技术社区  ›  Martin Dürrmeier

用slf4j实现自定义记录器

  •  30
  • Martin Dürrmeier  · 技术社区  · 15 年前

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

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

    我不知道该怎么办。 我的想法是实现一个自定义的日志绑定 通过实施 org.slf4j.Logger Interface

    下一步怎么办? 我的目标是不更改当前代码

    我考虑过的链接:

    2 回复  |  直到 10 年前
        1
  •  32
  •   chris    15 年前

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

    这样做之后,您需要实现 StaticLoggerBinder 返回记录器工厂和类名。如果您下载了slf4j zip文件,那么您也得到了所有实现的源代码,只需看一下slf4j-log4j中的staticloggerbinder就可以了。

    请查看此链接以了解详细信息: http://www.slf4j.org/faq.html#slf4j_compatible

        2
  •  5
  •   Matthias B    12 年前

    您不必编写自己的日志实现,将日志框架切换到 logback ?loback支持以本机方式记录到数据库。当您同时使用slf4j api时,您的代码不会改变。

    看看 ch.qos.logback.classic.db.DBAppender . 如果默认的表布局不适合您的需要,可以实现 ch.qos.logback.classic.db.names.DBNameResolver 自定义表名和冒号名。