当前位置: 首页 > 知识库问答 >
问题:

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

叶鹭洋
2023-03-14

我希望使用log4j2从我的web应用程序和服务器(Tomcat6)本身进行日志记录,最好都记录到同一个文件中。我的配置对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
<?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>

共有1个答案

墨宜人
2023-03-14

在回答这个问题和重新讨论这个问题之间,我升级到了Tomcat8。这就是我如何让它工作的方法。此方法需要log4j2的2.1版本,并且在某种程度上假定您已经使其适用于您的html" target="_blank">web应用程序。说明假设CATALINA_HOME和CATALINA base不是分开的

基于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]
  2. 提供单独的追加器
  3. 从extras下载tomcat-juli.jar和tomcat-juli-adapters.jar(通过http://tomcat.apache.org/download-80.cgi)
  4. 将“extras”中的log4j-api-2.1.jar、log4j-core-2.1.jar、log4j-jul-2.1.jar和tomcat-juli-adapters.jar放入$catalina_home/lib.
  5. 将$catalina_home/bin/tomcat-juli.jar替换为“extras”中的tomcat-juli.jar。
  6. 删除$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
 类似资料:
  • 问题内容: 我想将所有传入和传出请求记录到一个特定的日志文件中。但是,我通过以下配置获得的只是控制台输出。怎么了 log4j2.xml: src / main / resources / META-INF / cxf / org.apache.cxf.Logger: 问题答案: 解决方法是,我现在使用和桥依赖。

  • 问题内容: 我正在尝试使用 Log4j2 将spring日志打印到文件和控制台中。我猜这是我的Log4j2配置中的问题。我无法使其正常运行。我的log4j2.xml文件中有以下配置: 这些是我在pom文件中具有的依赖项:(可能其中一些不是必需的) 我没有在Java代码中做任何与spring相关的事情。我正在使用Apache Camel的Main类,该类读取我的spring配置并加载bean。 我究

  • 我试图从log4j1更改为log4j2。我所做的: 已删除旧配置文件log4j。xml 创建了新的配置文件log4j2。xml 创建了jboss部署结构。xml 编辑的pom 环境:野蝇10 1 EAR 4 WAR文件中没有使用web.xml。以前的log4j配置日志在EAR中(仅) Log4j2配置文件 Jboss部署结构 新的maven依赖关系 我之前说过我在SLF4j中使用log4j1。这些

  • 我试图从Log4j 1.7迁移到Log4j2.4在1.7中,我通过扩展org.apache.log4j创建AppLogger类。记录器和使用扩展的调试/错误/致命方法,例如, 但是在log4j2中。x、 我无法扩展类组织。阿帕奇。登录中。log4j。记录器;实现这一目标的最佳方式是什么?

  • 当我调用服务在日志文件中获取此信息消息时,它工作正常,但将此消息写入日志文件: php.INFO:User Deprecated:The“logger”服务是私有的,从容器中获取它是不推荐的,因为Symfony 3.2,并且将在4.0中失败。您应该公开服务,或者停止直接使用容器,改用依赖项注入。{“异常”:“[object](ErrorException(代码:0):用户已弃用:记录器\”\“服务

  • 现在,我正在尝试使用log4j2将所有具有信息级别或更高级别(警告、错误和致命)的内容记录到我的服务器,并将所有具有信息级别的内容记录到我的控制台。我能够把事情记录到我的控制台上,但是,我在正确地将正确的级别记录到服务器上时遇到了问题。 以下是我迄今为止尝试过的: Java XML 上面的代码没有输出我想要的,这是有INFO级别输出到控制台和INFO级别和向上输出到服务器。 相反,我能够输出:一切