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