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

log4j2不登录部署在tomcat上的webapplication

李兴为
2023-03-14

我正在升级运行在Tomcat 8上的Web应用程序的log4j版本。我正在从1.2.12版本升级到最新的2.11.1。

应用程序正在使用Maven。因此,我向我的应用程序pom添加了以下依赖项。xml(版本在父pom中管理):

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
</dependency>

我删除了旧的配置文件log4j.properties,并将其替换为文件夹src/main/资源中的一个新的log4j2.xml文件(在我的log4j2文件内容下面找到)。

当我直接运行main函数时,日志会正确地写入控制台和文件中。但是,当我在Tomcat上部署应用程序并运行它时,没有写入任何日志。

我检查了我的应用程序WAR,两个库都位于WEB-INF/lib文件夹中。我还通过向log4j-1**中添加对它有依赖性的外部库的排除项进行了测试,但没有任何改变。。。

是否有人已经有同样的问题,你是如何纠正的?

你好,马修

注:我的log4j2的内容。xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status=WARN strict="true">
    <Properties>
        <Property name="pattern">%d [%t] (%F:%L) %x %-5p [%c{1}] %m%n</Property>
        <Property name="filePath">C:/temp/logs/my_app/my_app.log</Property>
    </Properties>

    <Appenders>
        <Appender type="Console" name="STDOUT">
            <Layout type="PatternLayout" pattern="${pattern}"/>
        </Appender>
        <Appender type="RollingFile" name="FILE" fileName="${filePath}" filePattern="${filePath}.%i">
            <Layout type="PatternLayout" pattern="${pattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="500KB"/>
            </Policies>
            <DefaultRolloverStrategy max="1"/>
        </Appender>
    </Appenders>

    <Loggers>
        <Logger name="my.package.debug" level="DEBUG" additivity="false">
            <AppenderRef ref="STDOUT"/>
            <AppenderRef ref="FILE"/>
        </Logger>
        <Root level="WARN">
            <AppenderRef ref="STDOUT"/>
            <AppenderRef ref="FILE"/>
        </Root>
    </Loggers>
</Configuration>

共有1个答案

林曦之
2023-03-14

我最终发现了我的问题,这是由于另一个库(infinispan Embedded)正在重新定义Log4j类,例如LogManager。我加载的是thoses类而不是log4j库中的类,它们的版本比我想要的要旧。

我刚刚替换了库,日志被正确地写在文件中。

 类似资料:
  • 我面临的问题是,我的tomcat8.5没有登录到tomcat8标准输出。其中创建了除tomcat8标准输出和tomcat8标准输出之外的其他日志文件(主机管理器、本地主机、管理器、catalina、本地主机访问日志)。 我正在尝试使用系统调试我的web应用程序。出来println(),所以我想在日志中输出错误。但日志没有创建。所以我很难调试。 下面我附上我的tomcatlogging.proper

  • 这是我在stackoverflow中的第一个问题!WOW:) 在这个问题上,我简直不知所措:(我有一个简单的helloworld Web服务,构建WAR文件并将其部署在本地主机上的tomcat(8.0.35)上。明确地说:我刚刚写了一个类,用@WebService注释;然后我写了网络。xml和sun jaxws。xml;我什么都没做!这足以让该类成为Web服务吗?我是否错过了另一步? 问题:网址:

  • 我阅读并关注了BallusC的以下帖子,但仍然困惑:如何在Tomcat上安装和使用CDI? 尝试安装焊缝2.2.9.最终和配置如上所述。我正在使用以下内容: JSF 2.2、EL 2.2、Servlet3、Java7 还有什么可能导致这个错误?

  • 我在为Tomcat服务器部署Spring guides中提供的Spring Boot+WebSocket+Stomp教程时遇到了一些麻烦 我正在使用gradle创建战争,其中我有以下依赖 基本上,我只添加了spring-boot-starter-tomcat依赖项以及war和idea插件。 代码可以在https://spring.io/guides/gs/messaging-stomp-webso

  • 下午好啊 我是Spring和Spring Boot的新手,通常使用EclipseIDE和JSF。我在一个项目中工作,该项目在前端使用Angular,在后端使用Spring Boot。我有下面的Maven结构 前端生成一个webjar,它使用前端Maven插件构建Angular应用程序,后端依赖于这个webjar。后端pom。xml具有以下配置: 我不想使用嵌入式Tomcat服务器。在Intelli

  • 我使用的是Log4J2,Jboss 6.4上的2.4版本,我的log4j2.xml放在WEB-INF/classes中。我可以在没有关于log4j配置的错误的情况下部署war,并且可以在RollingFile name=“mylog”中正确地记录日志,但我不能理解的是,为什么在控制台appender中出现“mylog”的信息日志 配置: