Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从log4j.xml的.properties文件中获取动态值_Java_Xml_Spring_Logging_Log4j - Fatal编程技术网

Java 如何从log4j.xml的.properties文件中获取动态值

Java 如何从log4j.xml的.properties文件中获取动态值,java,xml,spring,logging,log4j,Java,Xml,Spring,Logging,Log4j,我正在使用log4j.xml文件。我有两个环境,即live和test。测试和实时的log4j中唯一的区别是级别(INFO-live、DEBUG-test)。因此,我保留了env的公共log4j.xml,并将级别设置为value=${loglevel}。我已经定义了单独的live-log4j.properties,其中包含loglevel=INFO。同样,对于测试也是如此。我的想法是,如果我为live构建jar,那么应该从live-log4j.properties文件中选择日志级别。如果用于测试构

我正在使用log4j.xml文件。我有两个环境,即live和test。测试和实时的log4j中唯一的区别是级别(INFO-live、DEBUG-test)。因此,我保留了env的公共log4j.xml,并将级别设置为value=${loglevel}。我已经定义了单独的live-log4j.properties,其中包含
loglevel=INFO
。同样,对于测试也是如此。我的想法是,如果我为live构建jar,那么应该从live-log4j.properties文件中选择日志级别。如果用于测试构建,则来自test-log4j.properties

我的问题是,我做的对吗?log4j.xml会从相应的*.properties文件中选取值吗

我使用的是spring框架。我已经提到了很多东西,但没有什么与此相关。 我已经在spring.xml中添加了这些属性文件(不确定它是否有效) 我没有客户端连接来测试此应用程序


我的log4j版本:log4j 1.x

以下是一篇文章,解释如何:

你可以简化它

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>
log4j.xml:

<root>
    <level value="${webapp.logLevel}" />
</root>
test-log4j.属性:

logging.level=DEBUG

是否可以不创建Log4jDirectConfigurer.java?您可以从操作系统创建系统变量<代码>导出webapp.logLevel=INFOLog4j中的占位符尝试访问系统属性。
logging.level=INFO
logging.level=DEBUG