Spring boot log4j-使用可执行jar时不写入文件

Spring boot log4j-使用可执行jar时不写入文件,spring-boot,log4j2,executable-jar,Spring Boot,Log4j2,Executable Jar,我正在使用SpringBoot并创建一个可执行的jar文件。我们已经配置了log4j2。当应用程序启动时,它会创建log4j2-spring.xml文件中指定的日志文件,但不会写入该文件。对配置文件中的日志级别进行热更改也不起作用…我猜这是意料之中的,因为它不会写入文件。我的配置在下面。所有路径都经过双重和三重检查,并显示正确 应该注意的是,spring显然配置了一些日志。在jar文件中,我删除了xml配置,以确保它不会读取jar文件中的任何内容……然而,日志记录会发生在控制台上,但不会发生在文

我正在使用SpringBoot并创建一个可执行的jar文件。我们已经配置了log4j2。当应用程序启动时,它会创建log4j2-spring.xml文件中指定的日志文件,但不会写入该文件。对配置文件中的日志级别进行热更改也不起作用…我猜这是意料之中的,因为它不会写入文件。我的配置在下面。所有路径都经过双重和三重检查,并显示正确

应该注意的是,spring显然配置了一些日志。在jar文件中,我删除了xml配置,以确保它不会读取jar文件中的任何内容……然而,日志记录会发生在控制台上,但不会发生在文件中……而且,更改级别也没有任何效果

文件:log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="PID">????</Property>
        <property name="name">AddressValidation</property>
        <Property name="log.file.path">/opt/java/logs</Property>
        <Property name="log.file.archive.path">/opt/java/logs/archive</Property>
        <Property name="log.file">AddressValidation</Property>
        <Property name="log.file.size">500MB</Property>
        <Property name="log.file.max-files">10</Property>
        <Property name="log.level">ERROR</Property>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property>
    </Properties>
    <Appenders>
        <RollingFile name="file" fileName="${log.file.path}/${log.file}.log" filePattern="${log.file.archive.path}/${log.file}-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID} --- [%t] %c{1}(%M:%L) : %m%n%wEx" />
            <Policies>
                <TimeBasedTriggeringPolicy /><!-- Rotated everyday -->
                <SizeBasedTriggeringPolicy size="${log.file.size}" /> <!-- Or every 100 MB -->
            </Policies>
            <DefaultRolloverStrategy max="${log.file.max-files}"/>
        </RollingFile>
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1}(%M:%L)}{cyan} %clr{:}{faint} %m%n%wEx" />
        </Console>
    </Appenders>
    <Loggers>
        <AsyncLogger name="org.hibernate.validator.internal.util.Version" level="warn" additivity="false" />
        <AsyncLogger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" additivity="false" />
        <AsyncLogger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" additivity="false" />
        <AsyncLogger name="org.apache.catalina.startup.DigesterFactory" level="error" additivity="false" />
        <AsyncLogger name="org.springframework.web" level="error" />
        <AsyncLogger name="com.netflix" level="error" additivity="false" />
        <AsyncLogger name="org.springframework.cloud" level="error" additivity="false" />
        <AsyncLogger name="com.abc.addressvalidation" level="ERROR">
            <AppenderRef ref="file"/>
        </AsyncLogger>
        <Root level="ERROR">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="file" />
        </Root>
    </Loggers>
</Configuration>

????
地址验证
/opt/java/logs
/opt/java/logs/archive
地址验证
500MB
10
错误
%d{yyyy-MM-dd'HH:MM:ss.SSSZ}%p%m%n
我称之为: java-Dlog4j.configurationFile=C:\test\config\log4j2-spring.xml-jar AddressValidation-0.0.1-SNAPSHOT.jar


我的想法都快用完了。我在这里找到很多关于StackOverflow的信息。这与我所遵循的建议基本相同。

知道在eclipse中执行时,它的行为符合预期可能会有所帮助。因此,我不认为提供的配置文件有任何问题。通过eclipse,它按预期写入控制台和文件。如果您执行mvn dependency:tree*,并将结果粘贴到gist,我怀疑您可能有多个日志框架。感谢您响应@clevertension。然而,我只是改变了它。我没有覆盖spring启动程序(正如我看到的关于如何做的文档),而是将其替换为log4j2包的直接pom文件声明。它在IDE和可执行jar文件中都可以正常工作