当前位置: 代码网 > it编程>编程语言>Java > Springboot logback-spring.xml无法加载问题

Springboot logback-spring.xml无法加载问题

2024年05月26日 Java 我要评论
springboot logback-spring.xml无法加载现象springboot项目,启动后,日志文件没有出现在logback-spring.xml指定的目录下且启动日志开头如下:"

springboot logback-spring.xml无法加载

现象

springboot项目,启动后,日志文件没有出现在logback-spring.xml指定的目录下

且启动日志开头如下:

"c:\program files\java\jdk1.8.0_144\bin\java"...
connected to the target vm, address: '127.0.0.1:52494', transport: 'socket'
18:34:58,011 |-info in ch.qos.logback.classic.loggercontext[default] - could not find resource [logback-test.xml]
18:34:58,011 |-info in ch.qos.logback.classic.loggercontext[default] - could not find resource [logback.groovy]
18:34:58,011 |-info in ch.qos.logback.classic.loggercontext[default] - found resource [logback.xml] at [jar:file:/d:/mvn_repo/xxx-1.0.2.jar!/logback.xml]
18:34:58,014 |-info in ch.qos.logback.core.joran.spi.configurationwatchlist@707194ba - url [jar:file:/d:/mvn_repo/yyy-1.0.2.jar!/logback.xml] is not of type file
18:34:58,112 |-info in ch.qos.logback.classic.joran.action.configurationaction - will scan for changes in [jar:file:/d:/mvn_repo/zzz-1.0.2.jar!/logback.xml] 

logback-spring.xml文件一直未改动过,如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration status="info">

    <springproperty scope="context" name="logpath" source="log.path"/>
    <springproperty scope="context" name="loglevel" source="log.level"/>


    <appender name="consolelog" class="ch.qos.logback.core.consoleappender">
        <layout class="ch.qos.logback.classic.patternlayout">
            <pattern> %d{yyyy-mm-dd hh:mm:ss.sss} %-5level [%thread] %logger{36} %line - %msg%n</pattern>
        </layout>
    </appender>

    <appender name="filelog" class="ch.qos.logback.core.rolling.rollingfileappender">
        <!--滚动策略-->
        <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
            <!--输出路径-->
            <filenamepattern>${logpath}/server.%d.log</filenamepattern>
        </rollingpolicy>
        <encoder>
            <pattern> %d{yyyy-mm-dd hh:mm:ss.sss} %-5level [%thread] %logger{36} %line - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>

    <appender name="fileerrorlog" class="ch.qos.logback.core.rolling.rollingfileappender">
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>error</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>
        <!--滚动策略-->
        <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
            <!--输出路径-->
            <filenamepattern>${logpath}/server.%d.error</filenamepattern>
        </rollingpolicy>
        <encoder>
            <pattern> %d{yyyy-mm-dd hh:mm:ss.sss} %-5level [%thread] %logger{36} %line - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>

    <root level="${loglevel}">
        <appender-ref ref="consolelog"/>
        <appender-ref ref="filelog"/>
        <appender-ref ref="fileerrorlog"/>
    </root>
</configuration>

原因分析

1.配置文件位置正确

classes/
├── application.properties
├── com
│   └── nero
│       └── test
│           ├── api
│           │   ├── api.class

2.分析启动日志,分析可能是依赖的jar中有logback.xml配置,冲突导致的问题

解决方案

在application.properties中加入配置:

logging.config=classpath:logback-spring.xml

通过该配置,强制指定日志的配置文件,问题得以解决

springboot logback-spring.xml 配置, 使用不同配置文件中的配置

application.yml

spring:
  profiles:
    active: prod  # active 哪一个配置文件

application-dev.yml

logging:
  file:
    path: d:/var/log

application-prod.yml

logging:
  file:
    path: /var/log/question

logback-spring.xml

<?xml version="1.0" encoding="utf-8"?>
<configuration scan="true" scanperiod="60 seconds" debug="false">
    <contextname>wechat-service</contextname>
    <!-- !!!!!!!!!获取 application-{xxx}.yml 的配置 !!!!!-->
    <springproperty scope="context" name="log.path" source="logging.file.path"/>
    <!--<property name="log.path" value="log" />-->
    <property name="log.maxhistory" value="15" />
    <property name="log.colorpattern" value="%d{yyyy-mm-dd hh:mm:ss} | %highlight(%-5level) | %boldyellow(%thread) | %boldgreen(%logger) | %msg%n"/>
    <property name="log.pattern" value="%d{yyyy-mm-dd hh:mm:ss.sss} %contextname [%thread] %-5level %logger{36} - %msg%n" />
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.consoleappender">
        <encoder>
            <pattern>${log.colorpattern}</pattern>
        </encoder>
    </appender>
    <!--输出到文件 info 级别的 log-->
    <appender name="file_info" class="ch.qos.logback.core.rolling.rollingfileappender">
        <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
            <filenamepattern>${log.path}/info/info.%d{yyyy-mm-dd}.log</filenamepattern>
            <maxhistory>${log.maxhistory}</maxhistory>
        </rollingpolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>info</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>
    </appender>
    <!--输出到文件 error 级别的 log-->
    <appender name="file_error" class="ch.qos.logback.core.rolling.rollingfileappender">
        <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
            <filenamepattern>${log.path}/error/error.%d{yyyy-mm-dd}.log</filenamepattern>
        </rollingpolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>error</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>
    </appender>
    <root level="debug">
        <appender-ref ref="console" />
    </root>
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
    </root>

</configuration>

从application-xxx.yml 中拿配置

<springproperty scope="context" name="log.path" source="logging.file.path"/>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com