Java日志框架中有哪些最新选项?
定期询问这个问题,但我一直认为现有的Java日志框架过于复杂和过度设计,我想看看有什么新东西。
我对当前项目有一个更为关键的问题,因为我们将JSON标准化为人类可读的数据编码,而且我见过的大多数日志框架都需要XML。 我宁愿避免在95%的应用程序配置中使用JSON,而仅仅因为日志记录框架而使用XML(事实上,我不喜欢用于除文本标记以外的任何其他用途的XML)。
是否有任何热门的新Java日志框架,这些框架都是主动维护的,function相当强大,有maven仓库,可以在不重新启动应用程序的情况下进行重新配置,而且不会将您绑定到XML?
你有3个选择:
- Log4J的
- java.util.logging(JUL)
- Logback (Log4J的后续版本)
现在,让我们看看它们如何满足您的要求:
- 积极维护
- 相当强大
- 有一个maven回购
- 无需重新启动您的应用即可重新配置
- 不要把你绑在XML上
log4j
:
- 不 ,没有积极维护
- 是的 –
- 是的 –
- 是的 –
- 是 (使用Java属性文件,请参阅配置)。
java.util.logging
(JUL) :
- 我会说是的 –
- 由您自行决定 –
- N / A –
- 是(通过JMX或
LogManager#readConfiguration()
– - 是(使用属性文件)
回溯 :
- 是的 –
- 是的 –
- 是的 –
- 是的,通过JMX或autoScan –
- XML或Groovy中的配置文件
看起来你必须做出一些让步(或找到一个我不知道的框架)。 我会选择Logback ,这就是现在发生的事情。
最近没有退回 ?
据我所知, SLF4J是最新最好的。
当然,配置log4j所需的XML不能被认为是压迫性的。 您可能一般都反对XML配置,但即使这样也在改变。 与大多数其他框架一样,Spring提供了使用XML或注释的选项。 我认为反对XML除了标记以外的任何东西都太过分了。 Ant和NANT是否会因为选择XML而关闭? 我想不是。
虽然log4j的通用配置方法是xml,但您也可以以编程方式对其进行配置,这意味着您可以使用所需的任何配置系统(并在运行时重新配置它)。
您可能想要查看我们的Java日志工具SmartInspect (它是商业的)。 SmartInspect是主动维护的,可以配置两行代码,并支持只包含name = value对的配置文件(无XML :))。 SmartInspect还可以在更改时自动重新加载配置文件 – 这是实时配置更改和生产系统的有用function。 SmartInspect还附带了一个您可能会觉得有用的图形日志分析和监控工具:
alt text http://sofzh.miximages.com/java/smartinspect-screenshot.png