以编程方式配置 LogBack appender [英] Programmatically configure LogBack appender
本文介绍了以编程方式配置 LogBack appender的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 logback.xml 中定义了一个 logback appender,它是一个 DB appender,但我很好奇是否有任何方法可以使用我自己定义为 bean 的连接池在 java 中配置 appender.
I have a logback appender defined in the logback.xml, it's a DB appender, but I'm curious if there is any way to configure the appender in java using my own connection pool defined as a bean.
我找到了类似的东西,但从来没有找到真正的答案.
I find similar things, but never the actual answer.
推荐答案
这里有一个对我有用的简单示例(注意我在这个示例中使用了 FileAppender)
Here a simple example that works for me (note that I use the FileAppender in this example)
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;
}
}
这篇关于以编程方式配置 LogBack appender的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文