如何在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或服务不同呢?这毫无意义。
logback.groovy
应该在Spring Boot中得到明确支持(至少从M6开始,也许更早我忘了)。如果它不能正常工作,我建议您在GitHub上提出问题并进行解释。 - Dave Syerlogging.config
(或仅在启动时作为系统属性)来为每个环境提供不同的XML(或Groovy或其他)配置。这样不够灵活吗? - Dave Syerlogback.groovy
的支持以及测试配置的添加是在修订版本9db55a3b7166b4794fde3beb44d9f30c4eb52348之后才加入的,该修订版本是在M6之后但包含在M7中。 - chrylis -cautiouslyoptimistic-