登录Web应用程序:最佳实践?

时间:2012-05-31 18:47:50

标签: java tomcat web-applications logging log4j

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

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

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

看起来我们还需要更改日志记录实现 - 我想问你一些关于如何在Web应用程序中实现日志记录的最佳实践。 事情应该是可能的:

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

2 个答案:

答案 0 :(得分:6)

  

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

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

  

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

和Logback都支持根据大小和日期回滚文件,例如, RollingFileAppender

  

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

fundamentally broken,请改用。然后,您只需在CLASSPTH上添加不同的实现。此外,SLF4J API非常好。

答案 1 :(得分:2)

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

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