Android|记一个导致 logback 无法输出日志的问题
💡
原文中文,约2700字,阅读约需7分钟。
📝
内容提要
在给Android项目添加logback日志框架时,遇到无法输出日志到文件的问题。经排查发现是logback无法正确解析变量导致的。原因是在Application类的类初始化过程中调用了LoggerFactory.getLogger(),此时application context还不可用。解决方法是去掉自定义Application类上的@Slf4j注解,改为在onCreate方法中手动初始化logger。
🎯
关键要点
- 在Android项目中集成logback日志框架时遇到无法输出日志到文件的问题。
- 通过@Slf4j注解注入logger,但程序启动后未生成日志文件。
- 检查配置文件后,基本排除配置问题。
- 开启logback的debug模式,发现日志文件路径错误,logback未正确解析${DATA_DIR}变量。
- logback的特殊属性在第一次调用LoggerFactory.getLogger()时初始化,必须在application context可用后进行。
- Application类的类初始化过程中调用LoggerFactory.getLogger(),导致logback无法解析${DATA_DIR}变量。
- 自定义Application类及其基类上使用了@Slf4j注解,导致logger过早初始化。
- 解决方法是去掉自定义Application类上的@Slf4j注解,在onCreate方法中手动初始化logger。
- 强调认真阅读文档的重要性。
➡️