springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题
logback现在基本上已经成为springboot日志框架中使用最多的日志实现,在使用中与各中间件集成的一些注意事项记录如下
一 Spring Boot 中 logback 读取application.properties(application.yml) 中的属性
其中使用的时候发现了一个问题,就是如果使用的lobback配置文件的名称是logback.xml 会先出现先找不到设置的属性,然后项目启动起来才会找到,
比如:
<
springProperty
scope
=
"context"
name
=
"log.path"
source
=
"logback.path"
defaultValue
=
"logs"
/>
说明:其中 source
=
"logback.path" 为
application.properties 中对应的配置节
name
=
"log.path" 为 日志中可以实际使用的配置节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <!-- 日志存放路径 --><springProperty scope= "context" name= "logback.path" source= "logback.path" /><!-- 日志输出格式 --><property name= "log.pattern" value= "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /><appender name= "jwsbapi" class = "ch.qos.logback.core.rolling.RollingFileAppender" > <file>${logback.path}/jwsbapi-info.log</file> <!-- 循环政策:基于时间创建日志文件 --> <rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > <!-- 日志文件名格式 --> <fileNamePattern>${logback.path}/jwsbapi.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 日志最大的历史 60天 --> <maxHistory>60</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> |
日志生成路径会取自source
=
"logback.path" 对应的application.yml中配置的节点路径信息
记录日志文件存放地址属性,会在项目启动的时候想出现一个找不到log.path_is_UNDIFIND 的目录,项目启动起来后才会读取到属性,在配置路径上生成日志文件。
SpringBoot 配置文件的加载顺序
logback.xml—>application.properties(application.yml)—>logback-spring.xml
二 问题原因分析
在正常情况下,将logback.xml修改为logback-spring.xml即可解决问题的。
三 集成nacos配置中心时
如果项目集成nacos配置中心功能后,为防止以上问题,需要在项目的application.yml中添加上配置
1 application.yml 2 # 日志目录 默认为当前目录 3 logback: 4 path: jwsb_logs 5 6 spring: 7 profiles: 8 active: demo
再在nacos配置中心的配置文件中添加 相应的配置,才可以处理掉 log.path_is_UNDIFIND,根本原因还是配置文件的加载顺序导致的#nacos 配置信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <em id= "__mceDel" > base : #nacos配置中心基础信息 nacos_host_master: 127.0.0.1 nacos_host_master_port: 8015 nacos_username: "nacos" nacos_password: "nacos" # 注意,发布时要切换到自己的 服务namespace 在nacos中查询即可 nacos_namespace: nacos_namespace # nacos配置中心相关配置 nacos: config: bootstrap: enable: true server-addr: ${ base .nacos_host_master}:${ base .nacos_host_master_port} type: yaml # 分组 group : DEFAULT_GROUP namespace : ${ base .nacos_namespace} data-ids: db.yml,sms.yml,site.yml,maojian.yml auto-refresh: true username: ${ base .nacos_username} password: ${ base .nacos_password}<br><br> </em> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-07-15 centos 安装JAVA 1.8开发环境