我的问题似乎很容易回答,但有几个很好的解决方案。 我喜欢选择“最好的”。
logger.debug("Some log message. Details: {}", someObject.toString());
是一种跳过字符串连接的好方法!委托给android.util.Log
的轻量级记录器绑定。com.example.myapp.MyClass
标记已转换为c*.e*.m*.MyClass
),自动生成的<= 23个字符长的日志标记,这可能会导致在不同类的相同日志标记中(例如,com.example.app.MyClass
和com.example.anotherapp.MyClass
都转换为c*.e*.a*.MyClass
);没有内置的崩溃报告系统。除了这些,我喜欢Androlog的行为,但我是Java开发人员,熟悉log4j / slf4j。 我们肯定需要崩溃报告系统,但有几个崩溃报告框架(除了android默认崩溃报告)。
我可以将它们中的一些组合起来,比如使用Log4J android,但是创建一个appender来使用androlog框架,但迟早会是一团糟,应该避免。
感谢您的建议,我希望结果将有助于将来决定其他人。
编辑:如下所述,我可以结合使用ex:log4j-android和slf4j(如果我使用log4j,我更喜欢做什么,因为日志格式化支持(“{}”,...)),但它没有回答这个问题。我必须选择一个框架,然后我可以用SLF4J外观装饰它。
答案 0 :(得分:12)
更好的方法。我认为,是使用SLF4J API +的一些实现。
对于Android应用程序,您可以使用以下内容:
答案 1 :(得分:5)
请检查this第一个回答
它说:
SLF4J基本上是一个抽象层。它不是日志记录 实现。这意味着如果你正在编写一个库并且你正在使用它 SLF4J,您可以将该库提供给其他人使用,他们可以 选择与SLF4J一起使用的日志记录实现,例如log4j或 Java日志API。它有助于防止项目依赖 许多日志API只是因为它们使用了库 依赖于他们。
因此,总结一下:SLF4J不会取代log4j,它们可以协同工作。它 从库/ app中删除对log4j的依赖。
答案 2 :(得分:2)
我已经尝试了original slf4j.org-android但不幸的是,这个jar无法记录调试/详细消息,因为它内部使用LOG.isDebugEnabled()进行调试输出,似乎总是错误。
目前我使用替代lp0-slf4j-android实现,该实现使用带有日志记录设置的属性文件,如果启用,我还可以获得调试/详细消息。