java - 类路径中的 logback.xml 与logging.config一起执行 环境参数 spring boot

标签 java logging spring-boot

我有一个 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/

相关文章:

java - 如何获取 double 组中最小元素的索引?

java - 记录改造到 Logback 记录器

api - 考虑在您的配置中定义类型为 'javax.servlet.ServletContext' 的 bean

java - Robocode如何获得敌人的坐标

java - 如何在 Java 中将 POJO 转换为 Map,反之亦然?

java - 注册 Google 应用引擎数据存储 -primarykey

spring - 无法在 Spring Boot 中 Autowiring @Repository 注释接口(interface)

python-2.7 - Websocket 客户端 Python 禁用输出

logging - 如何使用 Logstash 处理多个异构输入?

java - Spring Batch ItemReader + RabbitMQ - 未指定 'queue'