微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 从自定义logback appender使用Spring?

我们使用Spring获取所有JDBC连接以及持久性框架的一部分.但是为了编写我们自己的自定义数据库appender(它必须是自定义的,因为由于表名标准,我们不允许使用认的DBAppender).如何从Custom Appender内部获取spring bean的参考/使用autowire?我宁愿呆在春天而不是使用普通的JDBC.

自定义Appender:

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;

public class CustomDBAppender extends AppenderBase
最佳答案
这就是我解决问题的方法 – 我通过JNDI在appender的start方法中获得了一个DataSource,然后创建了我的JDBCTemplate.它对我很有用 – 没有任何麻烦.

public class MyAppender extends AppenderBasegalStateException("Must have the JNDI location");
    }
    DataSource ds;
    Context ctx;
    try
    {
      ctx = new InitialContext();
      Object obj = ctx.lookup(_jndiLocation);
      ds= (DataSource) obj;

      if (ds == null)
      {
        throw new IllegalStateException("Failed to obtain data source");
      }
      _jt = new JDBCTemplate(ds);
    }
    catch (Exception ex)
    {
      throw new IllegalStateException("Unable to obtain data source",ex);
    }

  }

  @Override
  protected void append(ILoggingEvent e)
  {
    // log to database here using my JDBCTemplate instance
  }
}

我不知道你是否会遇到同样的问题,但我不得不使用多步配置(如described here),因为我收到了SLF4J的“substitue logger”错误消息(described here).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐