log4j2 不适用于 tomcat
log4j2 does not work with tomcat
我有一个 Web 应用程序已部署到 Tomcat 服务器。它必须将某些内容记录到文件中。当我从独立应用程序执行相同操作时,它可以工作(记录到文件、控制台等),但 Tomcat 没有任何反应。
这是我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
<Properties>
<Property name="log-path">D:/tmp/logs/</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="${log-path}/myexample.log"
filePattern="${log-path}/myexample-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss}- [%c{1}]: %m%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="1 KB" />
</Policies>
<DefaultRolloverStrategy max="4"/>
</RollingFile>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="root" level="debug" additivity="false">
<appender-ref ref="RollingFile" level="info"/>
<appender-ref ref="Console" level="info"/>
</Logger>
<Root level="info" additivity="false">
<AppenderRef ref="RollingFile"/>
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
在我的 web.xml
中,我尝试了它的相对路径,绝对的,没有变化:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>D:\Utils\Apache\Tomcat\webapps\synchronize\WEB-INF/log4j2.xml</param-value>
</context-param>
<servlet>
<servlet-name>SynchServlet</servlet-name>
<servlet-class>ds.synch.SynchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SynchServlet</servlet-name>
<url-pattern>/synch</url-pattern>
</servlet-mapping>
</web-app>
我还尝试将我的 log4j2.xml
配置文件放入 Tomcat 的 classes
目录中——仍然没有输出到我的文件或 [=27= 的 stdout
文件].
如有任何帮助,我们将不胜感激。
我发现我哪里错了,这很愚蠢,我忘记将 log4j-web
添加到 tomcat 的类路径中
我有一个 Web 应用程序已部署到 Tomcat 服务器。它必须将某些内容记录到文件中。当我从独立应用程序执行相同操作时,它可以工作(记录到文件、控制台等),但 Tomcat 没有任何反应。
这是我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
<Properties>
<Property name="log-path">D:/tmp/logs/</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="${log-path}/myexample.log"
filePattern="${log-path}/myexample-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss}- [%c{1}]: %m%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="1 KB" />
</Policies>
<DefaultRolloverStrategy max="4"/>
</RollingFile>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="root" level="debug" additivity="false">
<appender-ref ref="RollingFile" level="info"/>
<appender-ref ref="Console" level="info"/>
</Logger>
<Root level="info" additivity="false">
<AppenderRef ref="RollingFile"/>
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
在我的 web.xml
中,我尝试了它的相对路径,绝对的,没有变化:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>D:\Utils\Apache\Tomcat\webapps\synchronize\WEB-INF/log4j2.xml</param-value>
</context-param>
<servlet>
<servlet-name>SynchServlet</servlet-name>
<servlet-class>ds.synch.SynchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SynchServlet</servlet-name>
<url-pattern>/synch</url-pattern>
</servlet-mapping>
</web-app>
我还尝试将我的 log4j2.xml
配置文件放入 Tomcat 的 classes
目录中——仍然没有输出到我的文件或 [=27= 的 stdout
文件].
如有任何帮助,我们将不胜感激。
我发现我哪里错了,这很愚蠢,我忘记将 log4j-web
添加到 tomcat 的类路径中