【问题标题】:Tomcat6 : What is the easiest way of configuring java.util.logging?Tomcat6:配置 java.util.logging 的最简单方法是什么?
【发布时间】:2011-06-09 09:47:18
【问题描述】:

我正在开发一个 servlet,它需要时不时地记录一些东西。但是,我不确定应该如何配置。

我的第一次尝试是创建一个 logging.properties 文件,然后使用下面的代码读取日志配置。

LogManager.getLogManager().readConfiguration(this.getClass().getResourceAsStream("/logging.properties"));

这工作得相当好,但似乎并非所有事情都能 100% 工作(我无法真正确定它是什么,因为有些事情有效,但有些事情却没有)。

但是,我不确定这是做什么的。它会覆盖 tomcat 提供的默认 logging.properties 中的所有设置 - 还是添加到 tomcat 提供的属性中?

【问题讨论】:

  • 我最终自己发现了这一点。我在记录日志时遇到问题的部分原因是缓冲区阻止了日志消息立即出现。我在处理缓冲区时删除了缓冲区,以便消息立即出现。我还发现logging.properties文件应该放在WEB-INF/classes/logging.properties。 Tomcat 会自动从该文件中获取设置。

标签: tomcat logging tomcat6


【解决方案1】:

如果其他人在寻找解释如何配置 tomcat6 日志记录的教程时发现了这个问题,我将简要说明我是如何工作的。

首先,即使您知道您将使用 java.util.logging,我仍然会说使用 slf4j 是个好主意。 slf4j 库只不过是一个日志外观,它只是将所有日志转发到 java.util.logging。但是,如果由于某种原因您应该稍后决定使用 log4j 或 commons 日志记录,那么这将在 2 分钟内完成。 slf4j 允许您指定要使用的日志记录框架,它只是将日志记录转发到该框架。

我选择使用 slf4j,然后让它将所有日志转发到 java.util.logging。只需将 'slf4j-api' 和 'slf4j-jdk14' jar 添加到您的项目中,您就可以开始了。您无需执行任何操作即可在应用程序中初始化日志框架。但是,您确实需要创建一个属性文件,其中包含有关日志记录格式、要记录到哪个文件等的详细信息。该文件由 java.util.logging 而不是 slf4j 使用,因为 slf4j 只是将所有日志事件转发到 java.util.logging。创建文件 WEB-INF\classes\logging.properties 并将以下代码粘贴到该文件中:

handlers = 1yourapplication.org.apache.juli.FileHandler

com.yourpplication.level = ALL
com.yourapplication.handlers = 1yourapplication.org.apache.juli.FileHandler

1yourapplication.org.apache.juli.FileHandler.level = WARNING
1yourapplication.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1yourapplication.org.apache.juli.FileHandler.prefix = yourapplication.
1yourapplication.org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter
1yourapplication.org.apache.juli.FileHandler.bufferSize = -1

就是这样。将创建文件“yourapplication-YYYY-MM-DD.log”(其中 YYYY-MM-DD 将替换为当前日期)并将日志写入该文件。将在每个午夜创建一个新的日志文件。

现在,要将某些内容记录到该文件中,您只需调用以下代码:

LoggerFactory.getLogger(getClass()).info("This is a logging test!");

您现在登录到您的应用程序日志文件。

【讨论】:

  • 我的日志文件已创建但为空?
  • 您是否确定您的日志事件日志杠杆高于配置文件中设置的杠杆?如果您设置了 FileHandler.level = WARNING,那么您需要记录级别为 WARNING 或更高级别的事件,然后才能将它们记录到日志文件中...
猜你喜欢
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多