logback遇上springclound所踩的坑

最近在别人基础上写代码,但是发现一个框架中写了好多日志输出的配置文件,比如logback-dev.xml,logback-beta.xml,logback-prod.xml,其实总结起来就是 除了日志输出目录不同外,其余的全部相同。于是呼我就开始了优化。思想如下:

1.springboot项目默认便是logback日志框架,默认配置文件是logback-spring.xml【优点:该名称日志文件,是默认加载的,不用配置logging.config属性,且加载顺序是在属性配置文件之后加载,也就是说,logback-spring.xml 可以读取到 application.yml文件中的属性】

2.所有日志配置文件用logback-spring.xml文件接受,日志输出目录作为变量传入即可。

然,所有的成功绝非一蹴而就,启动的时候总是在当前目录的根目录下自动生成一个目录:LOG_PATH_IS_UNDEFINED

以前玩那么多遍了,今天却栽了跟头,虽然不影响功能,但是“莫名其妙”多增加了一个日志目录心里还是不舒服的。凭着一股子牛劲,研究吧。

1.新搭建一个干净的框架,发现功能好使,没有额外目录生成。--》结论:maven不知引用了某个依赖,所以导致日志配置文件加载顺序在属性文件之前启动了。
2.回想最近新增的依赖,开始逐个删除,并反复测试日志输出,最后在移除spring-cloud-starter-netflix-eureka-client依赖时,日志输出正常。--》结论:eureka影响了logback-spring日志文件
3.向度娘请教,最后发现springcloud优先加载bootstrap.properties/bootstrap.yml,因为我没有该配置文件,找不到我定义的日志输出目录参数,所以日志配置文件先生成了默认的日志目录以及 默认文件。
4.思考:为什么没有bootstrap.yml文件时,会生成一个默认LOG_PATH_IS_UNDEFINED,而其后还会生成我指定的日志输出目录和文件呢?我理解的是不会再生成我指定的目录了

<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_PATH}/${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <cleanHistoryOnStart>${LOG_FILE_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
            <fileNamePattern>${LOG_PATH}/${ROLLING_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
            <maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
            <maxHistory>${LOG_FILE_MAX_HISTORY:-7}</maxHistory>
            <totalSizeCap>${LOG_FILE_TOTAL_SIZE_CAP:-0}</totalSizeCap>
        </rollingPolicy>
    </appender>

    <logger name="org.springframework" level="error" additivity="false"/>
    <logger name="org.hibernate" level="error" additivity="false"/>
    <logger name="com.mchange" level="error" additivity="false"/>
    <logger name="org.apache" level="error" additivity="false"/>
    <logger name="net.sf" level="error" additivity="false"/>
    <springProfile name="dev | test">
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <springProfile name="prod">
        <root level="INFO">
            <appender-ref ref="FILE" />
        </root>
    </springProfile>
</configuration>
logging.
  path: /usr/logs
  file: test.log

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值