java - 登录 Web 应用程序 : Best practices?

标签 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 文件,他将必须为每个新构建都这样做......
  • 应该可以进行某种滚动文件记录(例如:最多 10 个文件,每个文件最大 10mb)- 当然,也应该由客户来定义和更改此设置 ...
  • 由于另一个客户可能想改用标准的 JUL 日志记录 - 我当然更愿意不对首选库(在本例中为 Log4J)进行硬编码。

最佳答案

Customer needs to be able to change log-level without modifying anything in the *.war-file.

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

It should be possible to have some kind of rolling-file-logging

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

As another customer might want to use standard JUL-logging instead - I'd of course prefer to not hard-code the preferred library (Log4J in this case).

fundamentally broken , 使用 反而。然后你只需将不同的实现放在你的 CLASSPTH 上。 SLF4J API 也非常令人满意。

关于java - 登录 Web 应用程序 : Best practices?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10839457/

相关文章:

java - tomcat如何使用build.properties和build.xml?

java - 使用支持库导出 Android 项目时出现 ProGuard 错误

jsf - 使用 JSF 应用程序下载日志文件?

java - 如何检测tomcat上下文重新加载

Tomcat 中的 spring-boot app war 部署,现有的 spring web 应用程序失败

java - RESTeasy 3.0.16 缺少一些东西 (RESTEASY003210)

java - 如果我在 web.xml 中有两个匹配请求的 servlet 映射会怎样?

java - 如何使 TCPTransport$ConnectionHandler.run 消耗更少的 CPU 时间

java - 如何在java中添加n小时

java - 从 Java 到 C++ 的快速数组转换