簡體   English   中英

如何從log4j.xml的.properties文件中獲取動態值

[英]How to get a dynamic value from .properties file for log4j.xml

我正在使用log4j.xml文件。 我有兩個環境,即實時和測試。 測試和實時的log4j的唯一區別是級別(INFO-live,DEBUG-test)。 所以我為兩個env保留了常用的log4j.xml,並將該級別設為value = $ {loglevel}。 我已經定義了單獨的live-log4j.properties,其中包含loglevel=INFO 同樣也用於測試。 我的想法是,如果我為live構建jar,應該從live-log4j.properties文件中選擇loglevel。 如果是測試版本,則從test-log4j.properties開始。

我的問題是,我做的是正確的嗎? log4j.xml會從相應的* .properties文件中選擇值嗎?

我正在使用spring框架。 我已經提到了很多東西,但沒有任何相關內容。 我在spring.xml中添加了這些屬性文件(不確定它是否有效)我沒有客戶端連接來測試這個應用程序。

我的log4j版本:log4j 1.x

這是一篇帖子,解釋了如何: 在applicationContext中的log4j配置 - forum.spring.io

你可以簡化它

applicationContext.xml中:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>test-log4j.properties</value>
            <value>live-log4j.properties</value>
        </list>
    </property>
</bean>

<bean id="log4jDirectConfigurer" class="my.commons.logging.Log4jDirectConfigurer">
    <property name="location" value="classpath:log4j.xml"/>
    <property name="loglevelValue" value="${logging.level}"/>
</bean>

Log4jDirectConfigurer.java:

package my.commons.logging;

import java.io.FileNotFoundException;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Log4jConfigurer;

public class Log4jDirectConfigurer implements InitializingBean 
{
    private String location;
    private String loglevelKey = "webapp.logLevel";

    public void setLocation( String location ){
        this.location = location;
    }

    public void setLoglevelValue( String loglevel ){
        String value = System.getProperty( loglevelKey );
        System.setProperty( loglevelKey, loglevel );
    }

    public void afterPropertiesSet() {
        if( location == null ){
            return;
        }

        try {
            Log4jConfigurer.initLogging( location );
        } catch (FileNotFoundException e) {
            System.out.println(location + ": File not found");
        }
    }
}

的log4j.xml:

<root>
    <level value="${webapp.logLevel}" />
</root>

live-log4j.properties:

logging.level=INFO

測試log4j.propertie:

logging.level=DEBUG

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM