我有一个 Spring Boot 项目(版本 1.3.6),并且我已将 logback.xml 添加到该项目中。在创建可执行 jar 时,logback.xml 将包含在 jar 中并且也按预期工作。由于开发是在windows系统上完成的,所以classpath中的logback.xml将日志添加到路径F:/application/logs/abc.log的文件中。
但是在unix服务器上部署jar时,我想从外部文件提供logback.xml配置,并使用不同的日志文件路径,例如(/opt/logs/abc.log)。我在执行 jar 文件时使用 -Dlogging.config 参数来提供外部 logback.xml 配置文件,如下所示。
java -Dlogging.config=/path/to/logback.xml -jar ABC.jar
运行上述命令时,根据外部文件配置在 /opt/logs/abc.log 成功创建日志,但问题是 F:/application/logs/abc.log 目录结构也使用 0 字节文件创建,尽管其中没有进行任何日志记录。
因此,如果我从服务器上的/local 目录运行我的应用程序,则会创建以下目录。
/local/F:/application/logs/abc.log
我的问题是,如果使用外部 logback.xml 配置,我们如何避免创建类路径日志文件目录结构(/local/F:/application/logs/abc.log)。
我的 logback.xml 如下。
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<appender name="ROLLINGFILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>F:/FRF/logs/iqcx-ticketing.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>F:/FRF/logs/iqcx-ticketing-%d{yyyy-MM}.%i.zip
</fileNamePattern>
<maxHistory>10</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>20MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date{ISO8601} [%thread] - %-5level %logger %X - %msg%n
</pattern>
</encoder>
</appender>
<root>
<appender-ref ref="ROLLINGFILE" />
</root>
<logger name="iqcxLogger" level="info">
<appender-ref ref="ROLLINGFILE" />
</logger>
<logger name="org.springframework" level="info" additivity="false">
<appender-ref ref="ROLLINGFILE" />
</logger>
<logger name="org.mybatis.spring" level="info" additivity="false">
<appender-ref ref="ROLLINGFILE" />
</logger>
<logger name="org.hibernate.validator" level="info" additivity="false">
<appender-ref ref="ROLLINGFILE" />
</logger>
<logger name="org.apache.commons.beanutils" level="info" additivity="false">
<appender-ref ref="ROLLINGFILE" />
</logger>
</configuration>
最佳答案
由于 logback.xml 位于类路径中,因此将创建 F:/application/logs/abc.log,除非您通过添加 -Dlogging.file=/opt/覆盖
命令行参数logging.file
属性logs/abc.log
关于java - 类路径中的 logback.xml 与logging.config一起执行 环境参数 spring boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061286/