为什么我不能在log4j2-spring.xml中使用springProfile标签来配置具有不同弹簧配置文件的log4j2?

时间:2018-03-05 02:24:46

标签: spring-boot log4j2

好吧,我有3个spring配置文件:dev,prod,test,我想在不同的配置文件中使用不同的log4j2配置。 我检查了spring-boot reference并按照它说的方式进行了检查。 但是当我运行spring应用程序时,我只得到下面的日志:

2018-03-05 09:52:32,194 main ERROR Error processing element SpringProfile ([Configuration: null]): CLASS_NOT_FOUND
2018-03-05 09:52:32,194 main ERROR Error processing element SpringProfile ([Configuration: null]): CLASS_NOT_FOUND

我用谷歌搜索并堆栈溢出了错误日志,并且仍然无法找到springProfile标记无效的答案。

这是我的log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?>

<Configuration>
    <SpringProfile name="prod">
        <Appenders>
            <RollingFile name="RollingFile"
                         fileName="/home/prod/service.log"
                         filePattern="/home/prod/service.log.%d{yyyyMMddHH}"
                         append="true">
                <PatternLayout pattern="[%level][%d{yyyy-MM-dd'T'HH:mm:ss.SSSXX}][%l] %msg%n" />
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                </Policies>
            </RollingFile>
        </Appenders>
        <Loggers>
            <Root level="INFO">
                <AppenderRef ref="RollingFile"/>
            </Root>
        </Loggers>
    </SpringProfile>

    <SpringProfile name="!prod">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="[%level][%d{yyyy-MM-dd'T'HH:mm:ss.SSSXX}][%l] %msg%n" />
            </Console>

            <File name="File" fileName="./logs/service.log" append="false">
                <PatternLayout pattern="[%level][%d{yyyy-MM-dd'T'HH:mm:ss.SSSXX}][%l] %msg%n" />
            </File>
        </Appenders>
        <Loggers>
            <Root level="INFO">
                <AppenderRef ref="File"/>
                <!--When WIP, you could uncomment the next line to show log to console.-->
                <!--<AppenderRef ref="Console"/>-->
            </Root>
        </Loggers>
    </SpringProfile>
</Configuration>

1 个答案:

答案 0 :(得分:1)

Apache Log4J2与Spring Framework之间没有关系(or at least not that I know)。

您使用的SpringProfile标记也不存在于Log4J2的XML架构中。

您可以使用播放,使用不同的Spring Profile配置和不同的Log4J2配置。另一方面,Logback和Log4J2(几乎完全)是不同的库,用于记录目的。