java - 在 Spring 下使用 Java 而不是 XML 配置 Logback
问题描述
在 Spring[Boot] 下,如何使用 JavaConfig 或某种基于 Annotation 的配置以编程方式配置 Logback。 我希望尽可能避免使用 XML 文件
欢迎举例
我不是在寻找指向以下内容的链接。我已经有了这些。假设我有这些,我的问题是如何达到这个问题的目标。
How to configure Lockback in Java when NOT under Spring
How to set up Logback under Spring or Spring Boot using XML
解决方案
是的。如果您想以编程方式配置,这是可能的。例如,下面的代码对我有用:
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;
import org.slf4j.LoggerFactory;
public class LoggerUtil {
public static void main(String[] args) {
Logger example1 = createLoggerFor("example1", "example1.log");
Logger example2 = createLoggerFor("example2", "example2.log");
example1.info("test-example1");
example2.info("test-example2");
}
private static Logger createLoggerFor(String string, String file) {
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
PatternLayoutEncoder patternLayoutEncoder = new PatternLayoutEncoder();
patternLayoutEncoder.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
patternLayoutEncoder.setContext(loggerContext);
patternLayoutEncoder.start();
FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
fileAppender.setFile(file);
fileAppender.setEncoder(patternLayoutEncoder);
fileAppender.setContext(loggerContext);
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;
}
}
推荐阅读
- c++11 - std::mutex 属于哪个库?
- ios - 通过排名失败在firebase中获取数据?
- python - 谷歌拟合数据未使用 python 检索
- c++ - 如何在 C++ 中将 LPCTSTR 转换为 std::string
- angular - ./node_modules/@angular/core/fesm5/core.js 中的错误
- python - 运行此练习时,Matplotlib 冻结/崩溃
- python-3.x - mongodb:python返回字段(如果存在)
- keras - 验证损失/准确性总是在 LSTM 中达到某个阈值
- mockito - 测试用例没有得到被测方法抛出的异常
- python - Plotly - 更改子图的顺序