tomcat - 控制 Jenkins 外部日志记录?

标签 tomcat logging jenkins tomcat7 jenkins-plugins

我在 OS X 10.10 上的 Tomcat 7.0.56 下运行最新版本的 Jenkins (1.584)。我们安装了一些插件。我看到一个 XML 日志文件 (java0.log) 写入了运行 Tomcat 的用户的主目录。示例记录:

<record>
  <date>2014-10-20T09:42:19</date>
  <millis>1413816139820</millis>
  <sequence>4283</sequence>
  <logger>svnkit-cli</logger>
  <level>INFO</level>
  <class>org.tmatesoft.svn.core.internal.util.DefaultSVNDebugLogger</class>
  <method>log</method>
  <thread>56</thread>
  <message>CLI: executing statement: CREATE TRIGGER nodes_delete_trigger AFTER DELETE ON nodes WHEN OLD.checksum IS NOT NULL BEGIN UPDATE pristine SET refcount = refcount - 1 WHERE checksum = OLD.checksum; END;</message>
</record>

记录错误的不仅仅是 svnkit。我还在该字段中看到以下值:

javax.jmdns.impl.DNSIncoming
javax.jmdns.impl.DNSIncoming$MessageInputStream
javax.jmdns.impl.constants.DNSRecordType
javax.jmdns.impl.constants.DNSRecordClass
hudson.triggers.SCMTrigger
hudson.scm.SubversionSCM
hudson.plugins.jira.JiraChangeLogAnnotator
hudson.model.UpdateSite
jenkins.model.lazy.LazyBuildMixIn

我想知道的是如何指定此日志文件的位置(而不仅仅是 ~/java0.log)以及如何控制日志级别以便仅记录“ERROR”及以上级别。

这里使用的是什么记录器,我需要设置什么 java 属性来修改它的行为?这是我需要在 Tomcat 范围内设置的东西(例如在 bin/setenv.sh 中)还是只能为 Jenkins webapp 指定的东西?

最佳答案

Tomcat 的日志记录属性包含在 ${catalina.base}/conf/logging.properties 中。这些属性适用于 Tomcat 和 Tomcat 中包含的任何应用程序,除非在应用程序中配置了特定的日志记录解决方案。根据 Hudson/Jenkins,“系统日志捕获与 Hudson 相关的 java.util.logging 输出的输出。”基于此,java.util.logging.consoleHandler 似乎是您要修改的那个。

在某些使用 log4j 的情况下,日志记录属性将位于名为 log4j.xml 的文件中,但格式相似且易于理解。

这是默认的 logging.properties 文件,供引用:

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.

4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler

关于tomcat - 控制 Jenkins 外部日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468536/

相关文章:

file - webpack 可以报告哪个文件在 watch 模式下触发了编译吗?

sql-server - 记录数据库表、函数、存储过程、 View 等的使用情况

jenkins - Robotium 测试不在 Jenkins 上运行,而是在本地运行

java - Tomcat 支持哪些技术?

ruby-on-rails - resque rails 4.2 deliver_later 邮件程序

java - 以 Debug模式启动服务器在 eclipse 上不起作用

Jenkins 管道插件如何运行并行任务

jenkins - 如何访问共享库中的文件?

java - 用于 eclipse 的 sysdeo tomcat 插件是否为 helios 增加了值(value)?

apache - 如何在 dojo 中启用 CORS 以连接到 Openfire