我有一个spring boot项目(版本1.3.6),我已经将logback.xml添加到项目中。在创建可执行jar时,logback.xml将包含在jar中并且也按预期工作。由于开发是在Windows系统上完成的,因此类路径中的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字节文件创建的,虽然没有在此进行日志记录。
因此,如果我从服务器上的say / 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>
答案 0 :(得分:1)
由于logback.xml在类路径F中:将创建/application/logs/abc.log,除非您通过向命令行添加logging.file
参数来覆盖-Dlogging.file=/opt/logs/abc.log
属性