java - 以编程方式配置 LogBack appender

标签 java spring javabeans logback

我在 logback.xml 中定义了一个 logback appender,它是一个 DB appender,但我很好奇是否有任何方法可以使用我自己定义为 bean 的连接池在 java 中配置 appender。

我发现了类似的东西,但从来没有真正的答案。

最佳答案

这是一个适合我的简单示例(请注意,我在此示例中使用 FileAppender)

import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.FileAppender;

public class Loggerutils {

    public static void main(String[] args) {
          Logger foo = createLoggerFor("foo", "foo.log");
          Logger bar = createLoggerFor("bar", "bar.log");
          foo.info("test");
          bar.info("bar");
    }

    private static Logger createLoggerFor(String string, String file) {
          LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
          PatternLayoutEncoder ple = new PatternLayoutEncoder();

          ple.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
          ple.setContext(lc);
          ple.start();
          FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
          fileAppender.setFile(file);
          fileAppender.setEncoder(ple);
          fileAppender.setContext(lc);
          fileAppender.start();

          Logger logger = (Logger) LoggerFactory.getLogger(string);
          logger.addAppender(fileAppender);
          logger.setLevel(Level.DEBUG);
          logger.setAdditive(false); /* set to true if root should log too */

          return logger;
    }

}

关于java - 以编程方式配置 LogBack appender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16910955/

相关文章:

java - 寻求一些了解 simpleCursorAdapter 工作原理的见解

java - 使用 Java 使 PDF 可编辑

java - Spring@PostConstruct如何初始化final变量?

java - 我的 Servlet、Bean 和 JSP 之间的通信问题

具有可选返回类型的 JavaBean 自省(introspection)

java - instanceof 如何在接口(interface)上工作

java - 不兼容的类型以及尝试 .get 自定义适配器 (Android)

java - ORA-12705 和 ORA-00604 生产错误

java - 带代理的 SseEmitter

java - 如何创建类似于@autowire和@value的自定义注释