Tomcat启动时,无论什么级别的日志都会以error级别输出,导致红屏一片,不便于调试。大部分解决方案都是删除server.xml中的如下配置项:

```xml

```

这样虽然可以解决上图中的日志不再显示的问题,但如果遇到其他一些级别的日志,仍然会以error来输出。

最后,在Tomcat官网找到一种解决方式,即将Tomcat的日志输出替换为log4j日志系统来输出(官网文档),这样可以准确输出各种级别的日志。具体步骤如下:

1. 下载扩展jar包

- log4j-1.2.17.jar (v1.2.x)

- tomcat-juli.jar

- tomcat-juli-adapters.jar

将log4j和tomcat-juli-adapters这两个包放置在Tomcat的lib目录下,将tomcat-juli放置在Tomcat的bin目录下,如果存在相同的jar包则替换。

2. 创建配置文件

创建一个名为log4j.properties的文件,放置在Tomcat的lib目录下,文件内容如下,可根据需要自行修改:

```properties

# Set root logger level to DEBUG and its only appender to A1.

log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.Target=System.out

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

```

以下是重构后的代码:

```xml

```

以下是按照要求进行的重构,并保持段落结构。

## 3. 删除原有的日志配置文件

首先,我们需要删除Tomcat的`conf`目录下的`logging.properties`文件。可以使用以下命令来完成这个操作:

```bash

rm conf/logging.properties

```

## 4. 修改`logging.properties`文件

然后,我们需要根据要求修改`logging.properties`文件中的相关配置。以下是一个示例配置,可以根据实际情况进行调整:

```java

# logging.properties

handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler$Companion

java.util.logging.ConsoleHandler.level=ALL

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

java.util.logging.FileHandler.pattern=%h/%i-%L-%g.log

java.util.logging.FileHandler.level=ALL

java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

java.util.logging.LoggerContext.configClass=org.apache.tomcat.jdbc.log4j2.Log4j2ContextConfiguration

rootLogger=${org.apache.tomcat}.level=ALL, fileStream=${org.apache.tomcat}.filestream=${org.apache.tomcat}.path, console=${org.apache.tomcat}.console=${org.apache.tomcat}.level, ${javax}.servlet}.level=${javax}.servlet}.fileStream=${javax}.servlet}.path, ${javax}.servlet].level=${javax}.servlet].fileStream=${javax}.servlet].path, ${org}.hibernate].level=${org}.hibernate].fileStream=${org}.hibernate].path, ${javax}.persistence].level=${javax}.persistence].fileStream=${javax}.persistence].path, ${org}.mybatis].level=${org}.mybatis].fileStream=${org}.mybatis].path, ${javax}.jms].level=${javax].jms].fileStream=${javax].jms].path, ${org}.aop].level=${org}.aop].fileStream=${org}.aop].path, ${javax}.transaction].level=${javax].transaction].fileStream=${javax].transaction].path

rootLogger=${org}.aop].level=${org}.aop]loggerName=ROOT_LOGGER, fileStream=${org}.aop].path, console=${org}.aop]loggerName=STDOUT_LOGGER, fileStream=${org}.aop]path, ${javax}.servlet}ManagerServlet]loggerName=STDOUT_LOGGER, fileStream=[STDOUT]Path=[STDOUT], console=[STDOUT]Path=[STDOUT]

contextSelector=org.apache.tomcat.jdbc.log4j2.Log4j2ContextSelector

```

在这个示例中,我们为不同的记录器设置了日志级别、输出格式以及其他相关配置。你可以根据自己的需求调整这些配置。

## 5