我正在尝试配置Tomcat 8以使用Log4j2进行日志记录.
我已经找到了使用Log4j登录Tomcat的这个参考.它提供了一个示例log4j.properties文件,该文件配置Log4j以匹配Tomcat的内部日志记录.转换为Log4j2的大部分内容看起来非常简单,但最后将记录器映射到appender的部分让我感到难过:
# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\
INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\
INFO, HOST-MANAGER
Run Code Online (Sandbox Code Playgroud)
有没有人将此配置转换为与Log4j2一起使用?我一直在使用Log4j2配置文档并阅读了Log4j2 Architecture页面,但是我没有找到很多关于如何在Log4j2中进行这种容器映射的材料.
我想我可以为每个容器做一个单独的配置,但我更喜欢将它保存在一个地方,就像示例Log4j配置一样.
我希望使用log4j2从我的Web应用程序和服务器(tomcat 6)本身进行日志记录,最好是全部记录到同一文件。我拥有的配置适用于Web应用程序,但不适用于服务器类。
我想要的是将类似以下内容的行写入文件(它们目前仅写入控制台)
Aug 15, 2014 1:03:24 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-80
Aug 15, 2014 1:03:24 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1287 ms
Run Code Online (Sandbox Code Playgroud)
我在tomcat / lib目录中有log4j-api-2.0.1.jar,log4j-core-2.0.1.jar和log4j2.xml。简化的log4j2.xml如下所示。我通过status =“ all”看到的信息中没有任何问题。log4j2会自动设置自身-我没有通过CATALINA_OPTS传入configurationFile。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="all">
<Appenders>
<RollingFile name="R" fileName="../logs/general.log" filePattern="../logs/general-%d{yyyy-MM-dd}.log" append="true">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="1000"/>
</RollingFile>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="R" level="info"/>
<AppenderRef …Run Code Online (Sandbox Code Playgroud)