Java日志框架中有哪些最新选项?

定期询问这个问题,但我一直认为现有的Java日志框架过于复杂和过度设计,我想看看有什么新东西。

我对当前项目有一个更为关键的问题,因为我们将JSON标准化为人类可读的数据编码,而且我见过的大多数日志框架都需要XML。 我宁愿避免在95%的应用程序配置中使用JSON,而仅仅因为日志记录框架而使用XML(事实上,我不喜欢用于除文本标记以外的任何其他用途的XML)。

是否有任何热门的新Java日志框架,这些框架都是主动维护的,function相当强大,有maven仓库,可以在不重新启动应用程序的情况下进行重新配置,而且不会将您绑定到XML?

你有3个选择:

  • Log4J的
  • java.util.logging(JUL)
  • Logback (Log4J的后续版本)

现在,让我们看看它们如何满足您的要求:

  1. 积极维护
  2. 相当强大
  3. 有一个maven回购
  4. 无需重新启动您的应用即可重新配置
  5. 不要把你绑在XML上

log4j

  1. ,没有积极维护
  2. 是的 –
  3. 是的 –
  4. 是的 –
  5. 是 (使用Java属性文件,请参阅配置)。

java.util.logging (JUL)

  1. 我会说是的 –
  2. 由您自行决定
  3. N / A –
  4. 是(通过JMX或LogManager#readConfiguration()
  5. 是(使用属性文件)

回溯

  1. 是的 –
  2. 是的 –
  3. 是的 –
  4. 是的,通过JMX或autoScan –
  5. 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