以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