【发布时间】:2012-05-17 20:31:40
【问题描述】:
我的问题似乎很容易回答,但有几个很好的解决方案。 我喜欢选择“最好的”。
可用的框架(欢迎提出更多建议):
优点/缺点:
雄鹿:
- Pro:类似于Android日志框架,所以对现有代码只有很小的改动;能够在错误报告中发送更详细的崩溃报告(异常日志);不错的原木
- 缺点:没有标准的 java“getLogger”方法;通过将属性文件上传到 sdcard 可实现生产配置;我需要手动调用初始化日志;需要创建 LOG_TAG 类常量,或者通过 Aspect 破解它来创建日志标签常量以实现标准行为:标签是类名;当日志记录是一项业务需求时,我们需要对其进行测试。在 Android 上测试静态调用几乎是不可能的;记录器不能被框架注入
Log4J-Android:
- Pro:标准的 Java 登录方式;与 SLF4J 兼容;能够解析属性文件;
- Con:没有内置崩溃报告系统;在我看来:它不常用,所以使用它可能会很危险;
SLF4J-Android:
- Pro:好像是Log4J-Android等更多人开发的;如果记录器关闭,
logger.debug("Some log message. Details: {}", someObject.toString());是跳过字符串连接的好方法;委托给android.util.Log的轻量级记录器绑定。 - Con:由于 Android 平台上日志标签的长度限制(例如,
com.example.myapp.MyClass标签转换为c*.e*.m*.MyClass),自动生成的日志标签长度为 com.example.app.MyClass 和com.example.anotherapp.MyClass都转换为c*.e*.a*.MyClass);没有内置崩溃报告系统。
除此之外,我喜欢 Androlog 的行为,但我是一名 Java 开发人员,熟悉 log4j/slf4j。 我们肯定需要崩溃报告系统,但是有几个崩溃报告框架(除了android默认的崩溃报告)。
我可以组合其中的一些,例如使用Log4J android,但是创建一个appender来使用androlog框架,但迟早会变得一团糟,应该避免。
感谢您的建议,希望结果对以后决定其他人有所帮助。
编辑:如下所述,我可以将例如:log4j-android 与 slf4j 结合使用(如果我将使用 log4j,我更喜欢这样做,因为日志格式支持 ("{}",...) ),但它没有回答这个问题。我必须选择一个框架,然后我可以用 SLF4J 外观装饰它。
【问题讨论】:
-
根据您的描述,Androlog 听起来最好,但我看到它需要 Maven。我犹豫要不要在我的设置中添加另一个依赖项而没有显着的好处。
-
没有提到 Android 内置的日志框架?
-
23 个字符的限制不是 SLF4J 的缺点,而是 Android 的限制。其他日志框架也无法做到这一点。至少 SLF4J,在文档中提到它,并试图缩短它。
-
如果你使用的是kotlin,也可以使用:github.com/MicroUtils/kotlin-logging
标签: android logging log4j slf4j