gpt4 book ai didi

spring - 通过 Spring Log4jConfigurer 初始化 log4j2

转载 作者:行者123 更新时间:2023-12-04 20:46:42 26 4
gpt4 key购买 nike

从 log4j 1.2 迁移到新的 log4j 2. 添加到 pom:

<!-- Add log4j version 2 with 1.2 API -->
<dependency>
<!-- <groupId>log4j</groupId> -->
<!-- <artifactId>log4j</artifactId> -->
<!-- <version>1.2.9</version> -->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-beta6</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.0-beta6</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-beta6</version>
</dependency>

并尝试通过 Spring 上下文将其初始化为 log4j(在 log4j 1.2 上完美运行)。用于这个这样的配置:
<!-- Init log4j with appropriate config according to enviroment -->
<bean id="log4jConfigurer-bean" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="org.springframework.util.Log4jConfigurer"/>
<property name="targetMethod" value="initLogging"/>
<property name="arguments">
<list>
<value>classpath:config/env/log4j-${env.variable}.xml</value>
</list>
</property>
</bean>

不过现在好像不行了?我做错了什么?可能是应该修改 spring 配置吗?对 spring 使用这样的依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<artifactId>servlet-api</artifactId>
<groupId>javax.servlet</groupId>
</exclusion>
</exclusions>
</dependency>

最佳答案

Spring 提供的 Log4j 1.2 支持的一半已经完成,但不幸的是不是你所追求的(为此你需要深入了解 Log4j2 Configurator 类)。

对于 Web 应用程序,请在 http://logging.apache.org/log4j/2.x/log4j-web/index.html 阅读文档(以及文档不够用的代码) ,看来您可以使用 Log4J2 自己的配置器来进行参数替换,并将从类路径加载。

将以下内容添加到您的 pom.xml:

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.0-beta6</version>
</dependency>

在您的 web.xml 中,使用以下内容:
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classloader:/config/env/log4j-${sys:env.variable}.xml</param-value>
</context-param>
<listener>
<listener-class>org.apache.logging.log4j.core.web.Log4jContextListener</listener-class>
</listener>

注意类加载器之后的/并且 Log4j2 在 env 变量之前需要一个 sys: 前缀

*但是,到目前为止,我还没有能够让它从 Spring Log4jContextListener 直接迁移工作。似乎 Log4j2 有希望,但就目前而言,采用将保留在分支上,直到它没有那么多问题,并且有更好的文档*

关于spring - 通过 Spring Log4jConfigurer 初始化 log4j2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16673380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com