弹簧引导编程日志记录配置
如何在 Spring Boot 应用程序中以编程方式配置日志记录?
使用 xml 或属性文件不够灵活,无法满足我的需求。
更新:我想实现这样的东西:
@Value("${logging.level.root}")
private String loggingLevelRoot;
@Value("${logging.level.myApp}")
private String loggingLevelMyApp;
@Value("${logging.file}")
private boolean fileAppenderEnabled;
....
setLevel(Logger.ROOT_LOGGER_NAME, Level.toLevel(loggingLevelRoot)));
setLevel("com.myapp", Level.toLevel(loggingLevelMyApp)));
setLevel("org.springframework", Level.WARN);
setLevel("org.apache.coyote", Level.INFO);
setLevel("org.apache.catalina", Level.INFO);
setLevel("org.apache.catalina.startup.DigesterFactory", Level.ERROR);
setLevel("org.apache.catalina.util.LifecycleMBeanBase", Level.ERROR);
Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
logger.addAppender(createConsoleAppender());
if (fileAppenderEnabled) {
logger.addAppender(createFileAppender());
}
每个环境我所拥有的只是:
- logging.level.root=[INFO, DEBUG, ..]
- logging.level.myApp=[INFO, DEBUG, ..]
- logging.file=[true | false]
没有XML,Groovy和其他格式的重复,我真的不想处理。
归根结底,这实际上是为了实现与Spring JavaConfig为bean所做的相同的日志记录灵活性。XML 或其他文件格式过于静态,需要太多的重复,并且与应用程序的其余部分配置集成得不够好。
为什么日志记录的配置应与任何其他 Bean 或服务不同?这是没有道理的。