它是一个带有Log4j的Spring Boot应用程序,用于记录。
来自org.apache.catalina.*
的所有日志都将发送到syslog,它还包括未捕获的异常。
我们的应用程序使用Log4j(v1),因为它使用使用Log4j的遗留代码依赖项。
Spring Boot版本为1.5.2.RELEASE
。
我相信通过正确的设置,tomcat日志也会被写入log4j.xml
中配置的同一个文件,但我无法找到该问题的任何答案。
pom.xml
(相关部分):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Spring Logging -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.2.8.RELEASE</version>
</dependency>
log4j.xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} [%t] %5p %c{1} - %m%n" />
</layout>
</appender>
<!-- File appender -->
<appender name="logFileAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="/tmp/myappname.log"/>
<param name="Append" value="true" />
<param name="BufferedIO" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} [%t] %5p %c{1} - %m%n" />
</layout>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="consoleAppender" />
<appender-ref ref="logFileAppender" />
</root>
</log4j:configuration>
答案 0 :(得分:0)
您可以尝试将其排除在执行器工件中吗?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
根据您的评论:
如果我理解正确,应用程序正在正常运行,那么在异常冒泡时记录到syslog的servlet容器不是吗?
你还可以尝试添加:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-log4j</artifactId>
</dependency>
和/或传递log4j配置文件所在的位置:
-Dlog4j.configuration=<path to file>
如果这些不起作用,我唯一能想到的是你正在使用Spring Boot
1.5.x与Log4j
不相处,可能需要将其提升为{{ 1}}