【问题标题】:Logback Custom Data Base appender for spring boot application用于 Spring Boot 应用程序的 Logback 自定义数据库附加程序
【发布时间】:2019-06-11 06:22:13
【问题描述】:

我正在创建一个 java spring boot 应用程序,并且我需要将(信息日志)记录到特定的数据库表中。为此,我创建了一个扩展 AppenderBase 类的自定义 appender 类。现在的问题是,在我的自定义 appender 类中,我想使用 spring 的 application.properties 文件中提供的数据库属性创建/访问一个 jdbctemplate 对象。

如何在我的自定义 appender 中访问 spring 的 jdbctemplate 对象?

这里是代码示例 -

public class MyDBAppender extends AppenderBase<ILoggingEvent> {

    private JdbcTemplate jdbcTemplate;

    @Override
     protected void append(ILoggingEvent eventObject) {
       jdbcTemplate.savelog(....);
   } 
}

【问题讨论】:

  • 你的appender是什么样子的?
  • 添加了代码示例。谢谢

标签: java spring spring-boot logging logback


【解决方案1】:

您可以通过在类级别添加 @Component 注释来创建 MyDBAppender 的 Spring Bean。

或者,如果您不想这样做,或者如果这不起作用,您可以创建一个辅助类来访问 ApplicationContext:

@Component
public class ApplicationContextProvider implements ApplicationContextAware {

    private static ApplicationContext context;

    public static <T> T getBean(Class<T> beanType) {
        return context.getBean(beanType);
    }

    @Override
    public void setApplicationContext(ApplicationContext ac) throws BeansException {
        context = ac;
    }

}

要访问 JdbcTemplate 使用是这样的。

JdbcTemplate jdbcTemplate = ApplicationContextProvider.getBean(JdbcTemplate.class);

【讨论】:

    猜你喜欢
    • 2016-02-18
    • 1970-01-01
    • 2014-10-12
    • 2020-03-04
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    相关资源
    最近更新 更多