用于Spring Boot应用程序的Logback自定义数据库追加器

时间:2019-06-11 06:22:13

标签: java spring spring-boot logging logback

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

如何在自定义附加程序中访问spring的jdbctemplate对象?

这是代码示例-

public class MyDBAppender extends AppenderBase<ILoggingEvent> {

    private JdbcTemplate jdbcTemplate;

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

1 个答案:

答案 0 :(得分:0)

您可以通过在类级别添加@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);