gpt4 book ai didi

java - Tomcat 7 将所有日志记录到 catalina.out 但不记录到 log4j2 定义的文件中

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:27:45 25 4
gpt4 key购买 nike

在将我的应用程序转换为网络应用程序之前。 Log4j 将日志记录在我在 log4j2.xml 中定义的正确日志文件(info.log 和 debug.log)中。

但是当我将我的应用程序更改为 web.app 时,所有日志现在都记录到 servlet 容器 (tomcat 7) 中的 catalina.out 文件中。部署应用程序后,log4j2 创建了这些日志文件,但它们仍然是空的,所有日志都转到 catalina.out 文件。

你能指出我做错了什么吗。

web.xml中,我添加了必要的配置。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>project-service</display-name>

<!-- Support for Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>

<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>log4j2.xml</param-value>
</context-param>

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>


</web-app>

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" strict="true" name="XMLConfigTest"
packages="">

<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>

<RollingRandomAccessFile name="RollingRandomAccessFileDebug" fileName="/local/deploy/logs/debug.log"
filePattern="logs/$${date:yyyy-MM}/project-%d{MM-dd-yyyy}-%i.log.gz"
immediateFlush="false"
append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="RollingRandomAccessFile" fileName="/local/deploy/logs/info.log"
filePattern="logs/$${date:yyyy-MM}/project-%d{MM-dd-yyyy}-%i.log.gz"
immediateFlush="false"
append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingRandomAccessFile>
<!--<Async name="AsyncConsole">-->
<!--<AppenderRef ref="Console"/>-->
<!--</Async>-->
</Appenders>
<Loggers>
<Root level="TRACE">
<AppenderRef ref="RollingRandomAccessFileDebug" level="DEBUG"/>
<AppenderRef ref="RollingRandomAccessFile" level="INFO"/>
<AppenderRef ref="Console" level="TRACE"/>
</Root>
</Loggers>
</Configuration>

最佳答案

更改 fileName 属性

fileName="/local/deploy/logs/info.log"

像这样的事情(无论你的情况是什么路径)

fileName="${sys:catalina.home}/logs/info.log"

如果它同时写入 catalina 和日志文件,请引用此链接

http://app-inf.blogspot.com/2012/10/java-util-logging-behaviour-in-tomcat.html

关于java - Tomcat 7 将所有日志记录到 catalina.out 但不记录到 log4j2 定义的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21984605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com