gpt4 book ai didi

java - log4j.xml 本地构建的优先级

转载 作者:行者123 更新时间:2023-12-01 22:21:31 25 4
gpt4 key购买 nike

我有一个使用 log4j 进行日志记录的项目。我们有一个 log4j.xml 文件来控制日志级别。我想要另一个 log4j.local.xml ,我计划将其添加到 gitignore 文件中,一旦存在,该文件优先于正常的 log4j.xml 。这是在本地构建上,我可以根据自己的喜好设置日志级别,但是一旦 checkin 并构建项目(例如在 Jenkins 上)并部署正常的 log4j.xml 设置,就会使用正常的 log4j.xml 设置,因为 log4j.local.xml 将不存在.

编辑:应用程序没有任何配置来指定 log4j 的设置文件或任何内容。我假设日志框架有一些正在使用的默认值。此外,应用程序使用 Java 代码进行 Spring 配置,而不是 XML 文件。

最佳答案

您可以使用spring的MethodInvokingFactoryBean来告诉log4j在哪里查找log4j配置。

这是一个使用 springs xml 配置的示例:

<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>${log.properties}</value>
</list>
</property>
</bean>

然后每个环境将能够有不同的 log4j 属性文件。

编辑

java 配置示例

@Bean
public MethodInvokingFactoryBean methodInvokingFactoryBean(@Value("${log.properties}") String location) {
MethodInvokingFactoryBean methodInvokingFactoryBean = new MethodInvokingFactoryBean();
methodInvokingFactoryBean.setTargetClass(Log4jConfigurer.class);
methodInvokingFactoryBean.setTargetMethod("initLogging");
methodInvokingFactoryBean.setArguments(new Object[]{location});
return methodInvokingFactoryBean;
}

关于java - log4j.xml 本地构建的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29659443/

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