以Tomcat 6.0.29为例,配置Tomcat的日志输出方式,包括文件输出和控制台输出。设置日志级别、输出目录、输出前缀等参数。同时,配置控制台日志输出级别和格式化类。下面是每个日志文件的输出级别和处理类。
```markdown
# 以tomcat-6.0.29为例:
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
catalina.org.apache.juli.FileHandler.level = FINE # 日志级别
例:
1catalina.org.apache.juli.FileHandler.level = FINE # 设置 catalina 日志的级别为: FINE
1catalina.org.apache.juli.FileHandler.level = OFF # 禁用 catalina 日志的输出
1catalina.org.apache.juli.FileHandler.level = ALL# 输出 catalina 所有的日志消息均输出
catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs # 日志输出目录,此设置表示tomcat日志输出到tomcat\logs目录下
catalina.org.apache.juli.FileHandler.prefix = catalina. # 日志输出前缀,后面跟日期信息(yyyy-MM-dd)
注:tomcat_6.0.29输出4种不同的日志:catalina、localhost、manager、host-manager
java.util.logging.ConsoleHandler.level = FINE # 控制台日志输出级别
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter # 控制台日志输出格式化类,Formatter 为格式化 LogRecords 提供支持。
下面是每个日志文件的输出级别和处理类
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
```
Tomcat日志信息分为两类:
1. 运行中的日志,主要记录运行过程中的一些信息,尤其是异常错误日志。
2. 访问日志信息,记录访问的时间、IP地址以及访问的资源等相关信息。
2.1 访问日志的配置
默认情况下,Tomcat不记录访问日志。要实现访问日志的记录,可以按照以下步骤操作:
编辑${catalina}/conf/server.xml文件(注意:${catalina}是Tomcat的安装目录)。
将以下注释部分去掉:
```
```
请根据提供的内容完成内容重构,并保持段落结构:pattern=“common” resolveHosts=“false”/>
--->
复制代码
2.2 配置 Tomcat 以输出更详细的日志
通过对 2.1 示例中 pattern 项的修改,可以改变日志输出的内容。该项值可以为:common 与 combined,这两个预先设置好的格式对应的日志输出内容如下:
common 的值:%h %l %u %t %r %s %b
combined 的值:%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i
pattern 也可以根据需要自由组合,例如 pattern=“%h %l”
对于各 fields 字段的含义请参照:http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html 中的 Access Log Valve 项
修改 Tomcat 运行日志的等级:
Tomcat 日志分为下面5类:catalina、localhost、manager、admin、host-manager。每类日志的级别分为如下7种:SEVERE(highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)。
日志级别的设定方法:修改 conf/logging.properties 中的内容,设定某类日志的级别。示例:
设置 catalina 日志的级别为:FINE
catalina.org.apache.juli.FileHandler.level = FINE
禁用 catalina 日志的输出:
catalina.org.apache.juli.FileHandler.level = OFF
输出 catalina 所有的日志消息均输出:
catalina.org.apache.juli.FileHandler.level = ALL
使用 log4j 记录应用程序日志或系统日志。使用 Log4j 输出详细系统日志信息,快速诊断启动故障。
此例可以解决 Tomcat 启动异常时输出的错误信息不足的问题,通过使用 commons-logging 和 log4j 搭配输出详尽的日志信息。以 Windows 环境下的 Tomcat 5.5.27 为例:
1. 首先,将解压后的 Tomcat 目录设置为环境变量 CATALINA_HOME,例如:
```
E:\tomcat5.5
```
2. 下载 log4j 和 commons-logging:
- Log4j 下载地址:http://logging.apache.org/log4j/1.2/download.html
- Commons-logging 下载地址:http://apache.freelamp.com/commo ... gging-1.1.1-bin.zip
3. 将下载的 commons-logging-1.1.1.jar 和 log4j-1.2.15.jar 放置在 %TOMCAT_HOME%\bin 目录下(可根据需要放置在其位置)。
4. 在 %TOMCAT_HOME%\bin 目录下新建两个文件 commons-logging.properties 和 log4j.properties。
5. 编辑 commons-logging.properties 文件,内容如下:
```
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
```
6. 编辑 log4j.properties 文件,内容如下:
```
log4j.rootLogger=WARN,stdout,file
## 日志直接输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %l - %m%n
## 日志输出到文件 SystemOut.log ###
log4j.appender.file=org.apache.log4j.FileAppender
```
请根据提供的内容完成内容重构,并保持段落结构:
log4j.appender.file.File=E: /tomcat5.5/ logs/SystemOut.log
log4j.appender.file.Append=false
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %l - %m%n
该配置文件可详细参照:http://www.minaret.biz/tips/tomcatLogging.html#log4j_properties
修改 catalina.bat 文件:
将
set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar
替换为
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 来输出启动日志了。在 E: /tomcat5.5/ logs/SystemOut.log 文件中查看输出的日志。
应用程序中使用 log4j 的方法:从如下网址下载 log4j:http://logging.apache.org/log4j/1.2/download.html。创建 Java 工程,将 log4j.jar 添加到工程的编译路径下。创建名称为 log4j.properties 的文件,写入如下内容:
```plaintext
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
```
首先,我们需要修改log4j.properties文件中的ConversionPattern和log4j.rootLogger配置。将ConversionPattern设置为只显示警告级别及以上的日志,将log4j.rootLogger设置为仅显示警告级别及以上的日志。
修改后的log4j.properties内容如下:
```
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=warn, stdout
```
接下来,创建一个名为LogClass的类,并添加以下代码:
```java
import org.apache.log4j.Logger;
public class LogClass {
private static org.apache.log4j.Logger log = Logger
.getLogger (LogClass.class);
public static void main(String[] args) {
log .trace("Trace");
log .debug("Debug");
log .info("Info");
log .warn("Warn");
log .error("Error");
log .fatal("Fatal");
}
}
```
编译并运行程序,控制台将输出以下内容:
```
10:38:24,797 WARN LogClass:11 - Debug
10:38:24,812 INFO LogClass:12 - Info
10:38:24,812 WARN LogClass:13 - Warn
10:38:24,812 ERROR LogClass:14 - Error
10:38:24,812 FATAL LogClass:15 - Fatal
```
. 配置log4j.rootCategory为INFO,将级别为INFO的日志信息输出到stdout和R这两个目的地。日志级别包括OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置为OFF则不输出任何信息,如果配置为INFO,则只显示INFO、WARN、ERROR的日志信息,而DEBUG信息不会被显示。
2. 定义名为stdout的输出端是哪种类型。可以是以下几种:
- org.apache.log4j.ConsoleAppender(控制台)
- org.apache.log4j.FileAppender(文件)
- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)
- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3. 定义名为stdout的输出端的layout是哪种类型。可选类型有:
- org.apache.log4j.HTMLLayout(以HTML表格形式布局)
- org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
- org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
- org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)
4. 为stdout的layout设置ConversionPattern,例如:`[QC] %p [%t] %C.%M(%L) | %m%n`。这表示将日志信息格式化为:时间戳、线程名、日志级别、类名、方法名、行号和日志消息,最后以换行符结束。
如果使用 Pattern 布局,需要指定打印信息的具体格式 ConversionPattern。具体的打印参数如下:
- %m:输出代码中指定的消息
- %p:输出优先级,即 DEBUG、INFO、WARN、ERROR、FATAL
- %r:输出从应用启动到输出该日志信息所消耗的毫秒数
- %c:输出所属的类目,通常就是所在类的全名
- %t:输出产生该日志事件的线程名
- %n:输出一个回车换行符,Windows 平台为 "rn",Unix 平台为 "n"
- %d:输出日志时间点的日期或时间,默认格式为 ISO8601,也可以在其后指定格式,比如:%d{yyyy mm dd HH:mm:ss,SSS},输出类似:2002年10月18日22:10:28,921
- %l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
- [QC]:是日志信息的开头,可以为任意字符,一般为项目简称。
关于 Log4j 的相关资料,以下网址提供了 log4j 的介绍和使用示例:
- http://logging.apache.org/log4j/1.2/manual.html
- http://www.laliluna.de/log4j-tutorial.html