哪个Android日志框架使用?

我的问题似乎很容易回答,但有几个好的解决scheme。 我喜欢select“最好”的一个。

可用的框架(随意build议更多):

  • Androlog
  • SLF4J Android
  • Log4J – Android

优点缺点:

Androlog:

  • Pro:与Android日志框架类似,所以现有代码只有很小的变化; 能够在错误报告(exception日志)中更详细地发送崩溃报告; 好日志
  • Con:没有标准的java“getLogger”方法; 通过上传属性文件到SD卡可以实现的生产configuration; 我需要手动调用init日志logging; 需要像常量一样创buildLOG_TAG,或者通过Aspect来创build日志标记常量来实现标准的行为:标签是类名; 当日志logging是业务需求时,我们需要testing它。 在Android上testing静态调用几乎不可能; logging器不能被框架注入

Log4J的,Android的:

  • Pro:loginJava的标准方式; 兼容SLF4J; 能够parsing属性文件;
  • 答:没有内置的崩溃报告系统; 在我看来,它并不常用,所以使用它可能是危险的。

SLF4J-安卓:

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

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

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

感谢您的build议,希望以后的结果有助于决定其他人。

编辑:如下所述,我可以结合使用ex:log4j-android与slf4j(我喜欢做如果我将使用log4j,因为日志格式支持(“{}”,…)),但它没有回答这个问题。 我必须select一个框架,然后我可以用SLF4J外观来装饰它。

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

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

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

请检查这个第一个答案

它说:

SLF4J基本上是一个抽象层。 这不是一个日志logging实施。 这意味着如果你正在编写一个库,并使用SLF4J,你可以把这个库给其他人使用,他们可以select使用SLF4J的日志实现,例如log4j或者Java日志API。 它有助于防止项目依赖于大量的日志loggingAPI,因为它们使用依赖于它们的库。

所以,总结一下:SLF4J不会取代log4j,它们一起工作。 它从您的库/应用程序中删除对log4j的依赖。

我已经尝试了原始的slf4j.org-android,但不幸的是,这个jar无法获得debugging/详细消息被logging,因为它内部使用LOG.isDebugEnabled()debugging输出至less总是假的。

目前我使用替代的lp0-slf4j-android实现,它使用一个属性文件和日志设置,我也可以得到debugging/详细信息,如果启用。