`

Tomcat 使用 Log4j 输出详细系统日志信息,快速诊断启动故障

 
阅读更多

Tomcat 启动时的系统日志默认是由 JdkLog14Logger 打印出来的,如

2008-7-7 11:19:34 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.0.28
2008-7-7 11:19:34 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2008-7-7 11:19:34 org.apache.catalina.core.StandardHost getDeployer
信息: Create Host deployer for direct deployment ( non-jmx )

那我们能不能用 Log4J 来输出这种系统日志呢?我们知道像 Apache 那样的大部分开源框架、组件都是用通用日志组件 (commons-logging) 来输出日志的,因此如果把 commons-logging 和 log4j 搭配使用就能输出十分详尽的日志信息。

尤其是碰到 Tomcat 几乎能令人抓狂的 Error filterStart ,如控制台下得到如下信息:

2007-3-13 17:43:46 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2007-3-13 17:43:46 org.apache.catalina.core.StandardContext start
严重: Context startup failed due to previous errors

而茫然不知所措时,免不了会胡乱猜测,更容易使你的注意力集中在所有的 filter 本身上,其实有些冤枉 filter 了。至少网上针对这个问题有许多不明确的解,有配置文件问题的,有缺类少包的问题等,不一定能和你的实际问题对上号。

其实大可不必受如此之周折,解铃仍需寄铃人吗,由 Tomcat 给你落下的结,当然要 Tomcat 告诉你是怎么回事。很多人在自己的应用中会安放一个日志文件,却可能忽略掉 Tomcat 自身的日志文件,在 logs 目录下的 localhost_log.yyyy-MM-dd.txt 就事,记住只要碰到关于 Tomcat 本身启动的问题,查看其中当前的日志信息的话,问题就会坦荡荡荡显露在你的前面,基本也就能迎刃而解了。

前面讲过,commons-logging+log4j 可以输出极详尽的信息,那现在就来说说如何配置。很多人开发过程中是通过 MyEclipse 来启动 Tomcat 的,所有这里包括两种方法,分别介绍如下:

1. MyEclipse 启动 Tomcat 使用 Log4j 输出日志信息的配置

在 MyEclipse 的 Tomcat 服务器配置中的 Prepend to classpath 或者 Append to classpath 中加入

commons-logging-1.1.jar
log4j-1.2.13.jar
以及 log4j.properties 所在目录,如 D:\Tomcat\Tomcat 5.0.28-Test\bin

如图:



我是把 commons-logging-1.1.jar、log4j-1.2.13.jar 和 log4j.properties 都放在 %TOMCAT_HOME%\bin 目录下的,当然你也可以放在别处。

完了之后,通过 MyEclipse 启动 Tomcat 时就能看到让你眼花花的日志滚屏,请根据实际需要在log4j.properties 中屏蔽你不想关注的内容。所以像这种日志信息最好是记录在文件中,屏幕的缓冲区是有限且耗内存的。真正需要的时候你就可以从这个日志文件里读懂 Tomcat 的启动全过程。

如果你明白 commons-logging.properties 的功用,你也可以把这个文件放在与 log4j.properties 所在的目录下,可在其中指定其他 log 实现类,详见 commons-logging.properties 文件的内容。

2. startup.bat 启动 Tomcat 使用 Log4j 输出日志信息的配置

按前面推荐的做法,把 commons-logging-1.1.jar、log4j-1.2.13.jar 和 log4j.properties 都放在 %TOMCAT_HOME%\bin 目录下,然后修改 catalina.bat 文件,找到

set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar

行,在其后附上这两个包和 log4j.properties 所在目录到 classpath 上,修改后就是:

set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_HOME%\bin\commons-logging-1.1.jar;%CATALINA_HOME%\bin\log4j-1.2.13.jar;%CATALINA_HOME%\bin

保存,通过 startup.bat 启动就会用 log4j 来输出启动日志了,其他平台下的 Tomcat,请参照平台特性修改 catalina.sh 吧。

同样,你也可以应用 commons-logging.properties 指定其他的 log 实现,因为 Log4j 是它的默认实现,所以可省去。

Log4j 输出的启动日志形式如下:

15:36:37,859 org.apache.catalina.startup.Embedded.initNaming(Embedded.java:922) - Setting naming prefix=org.apache.naming
15:36:38,046 org.apache.catalina.startup.Catalina.createStartDigester(Catalina.java:350) - Digester for server.xml created 171
15:36:38,218 org.apache.catalina.core.NamingContextListener.<init>(NamingContextListener.java:83) - new NamingContextListener

许多你希望深入了解的内部细节都可以通过这样一份日志追踪到。

附上这两个属性文件的:log4j.properties 和 commons-logging.properties。

log4j.properties
view sourceprint?01.log4j.rootLogger=DEBUG,stdout,file
02.

03.## direct log messages to stdout ###
04.log4j.appender.stdout=org.apache.log4j.ConsoleAppender
05.log4j.appender.stdout.Target=System.out
06.log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
07.log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %l - %m%n
08.

09.## direct messages to file SystemOut.log ###
10.log4j.appender.file=org.apache.log4j.FileAppender
11.log4j.appender.file.File=../logs/SystemOut.log
12.log4j.appender.file.Append=false
13.log4j.appender.file.layout=org.apache.log4j.PatternLayout
14.log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %l - %m%n
15.

16.## block packages that you don't care about ###
17.log4j.logger.org.apache.commons.digester=ERROR
18.log4j.logger.org.apache.commons.beanutils=ERROR
19.log4j.logger.org.apache.commons.modeler=ERROR
commons-logging.properties
view sourceprint?1.org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
2.

3.#Please refer to the Log implementations in package org.apache.commons.logging.impl#
4.#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
5.#org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog

 

转载自:http://hi.baidu.com/thedawn0201/blog/item/df65b166651758c7e7113a8d.html

分享到:
评论

相关推荐

    tomcat5.5 log配置所需文件

    Log4j是Tomcat默认使用的日志系统,允许开发者根据需要定制日志级别、输出格式和目的地。你需要确保`log4j.jar`存在于Tomcat的`lib`目录下,以支持日志功能。 2. **Log4j配置文件**:通常,Log4j的配置文件名为`log...

    让tomcat 输出详细的错误信息

    当遇到问题时,理解如何让Tomcat输出详细的错误信息是至关重要的,因为这些信息能帮助我们诊断和解决系统中的故障。这篇博客文章的标题"让Tomcat输出详细的错误信息"正好触及了这一关键技能。 首先,我们要了解...

    TOMCAT6日志配置JAR包及配置文件

    你需要将这个JAR包放到Tomcat的`lib`目录下,这样Tomcat在启动时就会加载这个库,从而使用Log4j进行日志记录。 配置文件部分,通常情况下,Log4j的配置文件名为`log4j.properties`或`log4j.xml`。这个资源包中的...

    tomcat配置生成的日志文件按照日期新建工具

    在IT行业中,日志管理是系统运维和故障排查的关键环节,尤其对于服务器应用程序如Tomcat来说,日志记录能够提供宝贵的诊断信息。Tomcat作为一款流行的开源Java Servlet容器,其日志配置对于开发者和运维人员至关重要...

    SpringBoot+Swagger3+log4j2

    在项目中集成log4j2,可以帮助开发者追踪代码运行情况,调试问题,同时提供运行时的日志信息,有利于系统的监控和维护。 **整合应用** 在"SpringBoot+Swagger3+log4j2"项目中,这三者被巧妙地整合在一起,提供了一...

    TOMCAT不能正常启动总结

    文件列表中,“Tomcat不能正常启动.docx”可能是一个详细的故障分析报告或解决方案文档,包含了解决问题的步骤和建议。而“tomcat卡死补丁包.zip”则可能是博主或其他人提供的修复补丁,可能包含修正特定问题的修改...

    tomcat logs

    若需实现日志滚动,可以使用`RollingFileAppender`(如在Log4j中)或者配置JUL的`java.util.logging.FileHandler`,设置每日、大小触发的滚动策略。 6. **日志收集与分析** 在生产环境中,通常会将日志集中收集到...

    TailLog日志监控

    TailLog的主要功能在于实时跟踪和展示应用程序产生的日志文件,尤其对于那些依赖于日志输出来诊断问题的服务,如Tomcat、JBoss和MQ等,它的作用更为显著。这些服务在运行过程中,会持续生成大量日志信息,TailLog...

    TOMCAT的启动.rar

    Tomcat的日志文件位于`logs`目录下,包括`catalina.out`、`localhost_access_log.*.txt`等,它们可以帮助诊断启动和运行时的问题。使用`bin/shutdown.sh`或`bin/shutdown.bat`停止Tomcat服务。 7. **常见问题** -...

    tomcat日志分割

    3. **配置Log4j或Logback**:除了Tomcat内置的日志系统,你还可以选择使用Log4j或Logback这样的高级日志框架。它们提供了更灵活的日志配置,包括日志分割、归档、大小限制等功能。例如,在Log4j的配置文件(`log4j....

    apache tomcat7 linux tomcat7

    10. **故障排查**:如果遇到问题,可以检查日志、系统资源利用率,或者使用`jstack`和`jmap`等JDK工具进行诊断。还可以利用`catalina.sh run`命令以非守护进程模式启动Tomcat,方便在终端中查看实时输出,帮助定位...

    Linux环境下tomcat7

    在Linux环境下部署和管理Tomcat 7是许多IT专业人员必备的技能,特别是对于Web应用程序开发者和系统管理员来说。Tomcat 7是一个开源的Java Servlet容器,它实现了Java EE的Web部分,包括Servlet、JSP和JavaServer ...

    tomcat9 64位

    9. **日志管理**:Tomcat的日志信息分布在多个文件中,如`catalina.out`、`localhost.log`等。可以通过`logging.properties`配置日志级别和输出位置。 10. **部署应用**:将war文件直接放入`webapps`目录,Tomcat会...

    tomcat自恢复

    2. **日志分析**:Tomcat的日志文件(如`catalina.out`、`localhost_access_log.*.txt`)是诊断问题的关键。通过定期分析这些日志,可以找出导致服务异常的潜在问题,例如错误堆栈信息,或者频繁出现的警告信息。 3...

    Tomcat无响应问题定位流程

    2. **检查stderr.log和stdout.log**:这两个文件分别记录Tomcat的错误和标准输出信息,可能包含线程死锁、内存泄漏等故障线索。 3. **分析服务器的系统日志**:例如在Linux系统中查看/var/log/messages或/var/log/...

    apache-tomcat-7.0.92

    主要的日志文件包括catalina.out、localhost_access_log.*.txt和host-manager访问日志,通过对这些日志的分析,可以追踪应用运行情况和异常信息。 总之,Apache Tomcat 7.0.92是一个强大且易用的Java Web应用服务器...

    LINUX 查找tomcat日志关键词命令

    Tomcat作为一款广泛应用的Java应用服务器,其运行过程中会产生大量的日志信息,这些信息对于排查问题、优化性能以及故障诊断至关重要。本文将详细介绍如何在Linux环境中使用命令行工具快速定位Tomcat日志中的特定...

    Apache Tomcat8.0绿色版(windows环境)

    当遇到问题时,首先检查Tomcat的启动日志,如果找不到原因,可尝试调整`logging.properties`文件以获取更详细的日志输出。另外,确保Java环境已经正确配置,且版本与Tomcat兼容。 通过以上介绍,我们可以看到...

    tomcat目录介绍2

    通过查看这些日志文件,我们可以了解Tomcat服务器的运行状态,帮助诊断问题和故障排查。 - **重要性**:日志文件对于维护服务器的稳定性和性能至关重要。它们记录了服务器的运行情况,是解决问题的重要依据。 - **...

    apache-tomcat-9.0.13.rar

    1. 查看日志:Tomcat的日志文件位于logs目录下,如catalina.out、localhost_access_log.*.txt等,可帮助诊断问题。 2. 使用JMX监控:通过JMX(Java Management Extensions)监控Tomcat的运行状态,如内存使用、线程...

Global site tag (gtag.js) - Google Analytics