当前位置: 首页 > 知识库问答 >
问题:

Spring、SLF4J、&logback-自定义DB appender

沈俊美
2023-03-14

我对使用Spring、SLF4J和logback是新手。我试图实现一个自定义数据库追加器,它将只记录Spring批处理期间数据库的特定类型的异常。

到目前为止,我已经开始在spring中设置一个扩展AppenderBase类的Logback Database Appender,然后设置一个扩展InitializingBean的初始化器,以便在spring初始化后将Appender添加到根记录器(这样我就可以使用spring.xml中的DB信息)。

编辑:在做了更多的研究后,让我再问一个问题来验证。如果我要创建一个自定义记录器,比如“SpecialExceptionLogger”,我是否可以将DB追加器添加到特定的记录器中,然后在获得特殊异常时使用该记录器?

共有1个答案

仰钧
2023-03-14

您对“appender使用Spring的DB信息”的要求有点奇怪。在Spring启动期间,日志已经可用,如果启动期间的日志需要通过该appender,它将无法工作,因为您的appender尚未正确配置。我建议您单独配置appender(尽管实现您所期望的目标并非不可能)

对于您的其他问题:

如果我要创建一个自定义记录器,比如“SpecialExceptionLogger”,我是否可以将DB追加器添加到特定的记录器中,然后在获得特殊异常时使用该记录器?

<appender name="dbAppender" ...> ... </appender>
<logger name="SpecialExceptionLogger">
    <appender-ref ref="dbAppender"/>
</logger>

我相信过滤器在回退可以达到您所需要的。您可以在StackOverflow中的现有答案中找到它

 类似资料:
  • Overview Slf4j已经成为Logger的事实标准API, 它只是一个外壳,而与Commons-Logging比,最突出的一点是大部分情况下它不需要写类似下面的代码。 if(logger.isInfoEnabled()){ logger.info("hello " + name); } 而后面的实现方面,java.util.logging, log4j ,log

  • 我必须将自定义方法方法添加到我的日志系统中。假设我有几行代码,例如: 日志记录由slf4j处理。如何通过添加新(!)扩展我的记录器方法,如public void error(SomeTypeObject obj){/implementation/} 目标是不更改现有代码。如何强制LoggerFactory返回使用上述方法扩展的自己的记录器实现? 我跟踪了这个问题的答案:stackoverflow.

  • 下面是相关的pom.xml 下面是日志和StackTrace: 和logback-test.xml:

  • 我正试图把我的头围绕在所有不同的日志记录工具(log4j、slf4j、logback、jcl等)和它们都做的事情上。 我知道slf4j是不同日志记录工具的一个门面,它使任何日志记录工具之间的切换变得很容易。但到了日志的话题,我就一头雾水了。我知道logback是log4j的后继者,在这篇文章中,它使用了“natively implements”这个词;那到底是什么意思。从我的理解是,日志与SLF4

  • 我正在为我的应用程序部署一个spring boot可执行jar。我使用SLF4J日志记录,当我在IntelliJ内部构建和运行时,我没有任何问题。 然而,当我尝试运行.jar时,从命令行我得到一个LoggerFactory不是Logback LoggerContext,而是Logback在类路径异常上。 它在两个地方抱怨slf4j-log4j12-1.7.12.jar。 如果我从这两个位置移除ja

  • 我有一个使用slf4j进行日志记录的应用程序。现在我想添加一个功能,每当我记录错误时,就会调用一个特定的url。目前,我在应用程序级别添加了一个包装器方法,该方法发送http请求,然后调用logger方法。但这样我就错过了一些输出,一些异常只是被记录下来,而没有发送相应的请求。我正在尝试创建我的自定义logger类。我的问题是应该扩展哪些类(或要实现的接口)。我无法扩展Logger类,因为它的构造