我正在使用Spring Boot并创建一个可执行的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>
我这样称呼它: java -Dlog4j.configurationFile = C:\ test \ config \ log4j2-spring.xml -jar AddressValidation-0.0.1-SNAPSHOT.jar
我这里的想法不多了。我在这里找到关于StackOverflow的很多信息。我认为我遵循的建议几乎都是相同的。