7

在客户站点上部署 Web 应用程序(在测试环境中)期间,我们遇到了应用程序日志记录问题。我将很快尝试描述当前的情况:

  • 实现使用由 java.util.logging 和 apache.commons.logging 检索的 Logger。
  • 在部署的包中存在一个指向 JUL 的 commons-logging.properties。
  • 应用程序在 Tomcat 6.x 上运行

客户决定他想在 tomcat 上使用 Log4J 并对其进行配置,使其(通常)工作 - 当然它不适用于上述应用程序。

看来我们无论如何都需要更改日志记录实现 - 我想向您询问一些关于如何在 Web 应用程序中实现日志记录的最佳实践。以下事情应该是可能的:

  • 客户需要能够在不修改 *.war 文件中的任何内容的情况下更改日志级别。-> 如果他必须修改战争文件,他必须为每个新版本都这样做......
  • 应该可以进行某种滚动文件日志记录(例如:最多 10 个文件,每个文件最多 10mb)——当然也应该由客户来定义和更改此设置...
  • 由于另一个客户可能想要使用标准的 JUL 日志记录 - 我当然更愿意不对首选库(在这种情况下为 Log4J)进行硬编码。
4

2 回答 2

6

客户需要能够在不修改 *.war 文件中的任何内容的情况下更改日志级别。

您可以将日志框架配置文件(log4j.xmllogback.xml)放在 WAR 文件之外。还支持在更改此文件时自动重新配置。

应该可以有某种滚动文件记录

和 Logback都支持基于大小和日期的文件回滚,参见例如RollingFileAppender

由于另一个客户可能想要使用标准的 JUL 日志记录 - 我当然更愿意不对首选库(在这种情况下为 Log4J)进行硬编码。

从根本上被破坏了,改用。然后,您只需在您的 CLASSPTH 上放置不同的实现。SLF4J API 也很讨人喜欢。

于 2012-05-31T18:53:31.523 回答
2

你应该看看SLF4J。它本质上是一个包装器,允许最终用户放入他们想要的任何日志库(大多数情况下)。

虽然我没有尝试过,但他们甚至有一个迁移工具,可以帮助您更改代码以使用它。

于 2012-05-31T18:52:04.003 回答