使用哪种Android日志框架?

Mar*_*ell 53 logging android log4j slf4j

我的问题似乎很容易回答,但有几个很好的解决方案.我喜欢选择"最好的".

可用框架(随意提示更多):

优点缺点:

Androlog:

  • Pro:与Android日志框架类似,因此现有代码只有很小的变化; 能够在错误报告中更详细地发送崩溃报告(异常周围的日志); 好日志
  • Con:没有标准的java"getLogger"方法; 通过将属性文件上传到SD卡可实现生产配置; 我需要手动调用init日志; 需要像常量一样创建LOG_TAG,或者通过Aspect来破解它来创建日志标记常量来实现标准行为:标签是类名; 当日志记录是业务需求时,我们需要对其进行测试.在Android上测试静态调用几乎是不可能的 Logger不能通过框架注入

Log4J的,Android的:

  • Pro:登录Java的标准方式; 兼容SLF4J; 能够解析属性文件;
  • Con:没有内置的崩溃报告系统; 在我看来:它不常用,所以使用它可能会很危险;

SLF4J-安卓:

  • Pro:似乎是由像Log4J-Android这样的更多人开发的; 该logger.debug("Some log message. Details: {}", someObject.toString());是跳过字符串连接,如果记录器被关闭一个良好的,有效的途径; 委托给的轻量级记录器绑定android.util.Log.
  • Con:由于Android平台上的日志标记的长度限制(例如,com.example.myapp.MyClass转换为标记c*.e*.m*.MyClass),自动生成的日志标记长度<= 23个字符,这可能导致不同类的相同日志标记(例如,com.example.app.MyClass并且com.example.anotherapp.MyClass都翻译to c*.e*.a*.MyClass); 没有内置的崩溃报告系统.

除了这些,我喜欢Androlog行为,但我是一个Java开发人员,熟悉log4j/slf4j.我们肯定需要崩溃报告系统,但有几个崩溃报告框架(除了android默认崩溃报告).

我可以结合其中的一些,例如使用Log4J android,但是创建一个appender来使用androlog框架,但迟早会是一团糟,应该避免.

感谢您的建议,我希望结果将有助于将来决定其他人.

编辑:如下所述,我可以结合ex:log4j-android与slf4j(如果我将使用log4j,我更喜欢做什么,因为日志格式支持("{}",...)),但它确实如此没有回答这个问题.我必须选择一个框架,然后我可以用SLF4J外观装饰它.

ste*_*nsk 12

更好的方法.我想,是使用SLF4J API +的一些实现.

对于Android应用程序,您可以使用以下内容:

  1. Android Logger是轻量级但易于配置的SLF4J实现(<50 Kb).
  2. LOGBack是最强大和优化的实现,但其大小约为1 Mb.
  3. 其他任何你的口味:slf4jandroid,slf4j-android.

  • Android的Logback似乎非常先进:https://github.com/tony19/logback-android/wiki/FAQ (5认同)

sil*_*war 6

请检查第一个答案

它说:

SLF4J基本上是一个抽象层。它不是日志记录实现。这意味着,如果您正在编写库并且使用SLF4J,则可以将该库提供给其他人使用,他们可以选择将哪种日志记录实现与SLF4J一起使用,例如log4j或Java日志记录API。它有助于防止项目仅因为它们使用依赖于它们的库而依赖于许多日志记录API。

因此,总结一下:SLF4J不能代替log4j,它们可以一起工作。它从您的库/应用程序中删除了对log4j的依赖。