Android|记一个导致 logback 无法输出日志的问题

💡 原文中文,约2700字,阅读约需7分钟。
📝

内容提要

在给Android项目添加logback日志框架时,遇到无法输出日志到文件的问题。经排查发现是logback无法正确解析变量导致的。原因是在Application类的类初始化过程中调用了LoggerFactory.getLogger(),此时application context还不可用。解决方法是去掉自定义Application类上的@Slf4j注解,改为在onCreate方法中手动初始化logger。

Q&A

在Android项目中使用logback时遇到什么问题?

在Android项目中集成logback日志框架时,无法输出日志到文件。

为什么logback无法解析${DATA_DIR}变量?

因为在Application类的类初始化过程中调用了LoggerFactory.getLogger(),此时application context还不可用。

如何解决logback无法输出日志的问题?

去掉自定义Application类上的@Slf4j注解,在onCreate方法中手动初始化logger。

使用@Slf4j注解会导致什么问题?

使用@Slf4j注解会导致logger过早初始化,从而在application context不可用时调用LoggerFactory.getLogger()。

如何检查logback的配置问题?

可以通过开启logback的debug模式,查看logcat输出,检查日志文件路径和错误信息。

在使用logback时,为什么要在onCreate方法中初始化logger?

因为logback的特殊属性在第一次调用LoggerFactory.getLogger()时初始化,必须在application context可用后进行。

🏷️

标签

➡️

继续阅读