【问题标题】:Logging server classes in Tomcat 6 with log4j2使用 log4j2 在 Tomcat 6 中记录服务器类
【发布时间】:2014-08-15 12:29:09
【问题描述】:

我希望使用 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 如下所示。我没有看到 status="all" 给出的信息有任何问题。 log4j2 正在自动设置 - 我没有使用 CATALINA_OPTS 传递配置文件。

<?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>

知道我做错了什么吗?

【问题讨论】:

  • 你在tomcat发行版上改过juli和juli-adapter了吗?
  • 是的,我正在使用这些 jars 文件的 /bin/extras 版本

标签: tomcat log4j2


【解决方案1】:

在回答这个问题和重新审视它之间,我升级到了 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.[Catalina].[localhost]、org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] 设置单独的附加程序 和 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]
  2. 从 extras 下载 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. 将 $CATALINA_HOME/bin/tomcat-juli.jar 替换为 "extras" 中的 tomcat-juli.jar。
  5. 删除 $CATALINA_BASE/conf/logging.properties

我添加的额外步骤是将日志管理器设置为使用来自 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      相关资源
      最近更新 更多