使用log4j2在Tomcat 6中记录服务器类

时间:2014-08-15 12:29:10

标签: tomcat log4j2

我希望使用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

我在tomcat / lib目录中有log4j-api-2.0.1.jar,log4j-core-2.0.1.jar和log4j2.xml。一个精简的log4j2.xml如下所示。我没有看到状态="所有"给出的信息有任何问题。 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 ref="STDOUT" level="error"/>
        </Root>
    </Loggers>
</Configuration>

知道我做错了吗?

2 个答案:

答案 0 :(得分:5)

在回答这个问题并重新访问它之间,我升级到了tomcat 8.这就是我设法让它工作的方式。此方法需要log4j2的2.1版,并且有些假设您已经使它适用于您的Web应用程序。说明假设CATALINA_HOME和CATALINA基础不是单独的

基于http://tomcat.apache.org/tomcat-8.0-doc/logging.html#Using_Log4j

  1. 将log4j2.xml放入$ CATALINA_BASE / lib中。您可能希望为org.apache.catalina.core.ContainerBase提供单独的appender。[Catalina]。[localhost],org.apache.catalina.core.ContainerBase。[Catalina]。[localhost]。[/ manager] 和org.apache.catalina.core.ContainerBase。[Catalina]。[localhost]。[/ host-manager]
  2. 从额外内容下载tomcat-juli.jar和tomcat-juli-adapters.jar(通过http://tomcat.apache.org/download-80.cgi
  3. 将log4j-api-2.1.jar,log4j-core-2.1.jar,log4j-jul-2.1.jar和tomcat-juli-adapters.jar从“extras”放入$ CATALINA_HOME / lib。
  4. 用“extras”中的tomcat-juli.jar替换$ CATALINA_HOME / bin / tomcat-juli.jar。
  5. 删除$ CATALINA_BASE / conf / logging.properties
  6. 我添加的额外步骤是将日志管理器设置为使用log4j2-jul网桥(log4j-jul-2.1.jar)中的管理器。更改catalina.bat或catalina.sh以确保类路径包含bin / tomcat-juli.jar,lib / log4j-jul-2.1.jar,lib / log4j-api-2.1.jar和lib / log4j-core-2.1。 jar,用于启动tomcat的命令包括

    -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
    

答案 1 :(得分:0)

这可能是可能的,但可能并不容易。这是一个很好的起点:http://tomcat.apache.org/tomcat-6.0-doc/logging.html