问题:
SpringBoot + LogBack 写日志,除了正常的日志之外,程序跑起来后会在项目根目录多生成一个 LOG_PATH_IS_UNDEFINED 的文件夹,我的配置是以下:

applickation.yml

logging:# logback.xml配置文件的位置config: classpath:logback-spring.xmlfile:path: D:\\mylog\\logs

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds"><!--读取配置中心的属性 --><!-- 读取springboot配置文件application.yml中的属性标签,此处读取的日志存放路径,不带文件名,文件名后面根据级别命名 --><springProperty scope="context" name="log.filePath" source="logging.file.path"/><springProperty scope="context" name="applicationName" source="spring.application.name"/><!-- <property name="LOG_PATH" value="logs" /> --><property name="MAX_FILE_SIZE" value="100MB" /><property name="MAX_HISTORY" value="30" /><!-- 日志的打印格式,不带颜色,因为带颜色的在文件中不显示 --><property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%-5level] %class:%method  [%tid] ${applicationName}  %msg%n"/><!-- 控制台日志的打印格式,带颜色的 --><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符--><property name="logconsole.pattern" value="%boldCyan(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %green([%thread]) %highlight([%-5level]) %boldMagenta(%class):%boldCyan(%method)  %yellow([%tid]) [%red(${applicationName})]  %cyan(%msg%n)"/><!--输出到控制台 --><!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%-5level:级别从左显示5个字符宽度,%logger{50}:表示logger名字最长50个字符,否则按照句点分割,%msg:日志消息,%i索引【从数字0开始递增】 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>DEBUG</level></filter><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><!--在控制台使用caller方式打印堆栈信息有超链接,使用replace去掉换行符--><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><Pattern>${logconsole.pattern}</Pattern></layout><!-- 设置字符集 --><charset>UTF-8</charset></encoder></appender><!--所有日志输出到文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!--日志名,指定最新的文件名,其他文件名使用FileNamePattern --><File>${log.filePath}/all.log</File><!--日志文件输出格式 --><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><!--%logger{50}:表示logger名字最长50个字符,否则按照句点分割。%M:输出执行日志请求的方法名。尽量避免使用,除非执行速度不造成任何问题。%line:输出执行日志请求的行号。尽量避免使用,除非执行速度不造成任何问题。 --><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><Pattern>${log.pattern}</Pattern></layout><!-- 设置字符集 --><charset>UTF-8</charset></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志归档 后面可以加.zip --><fileNamePattern>${LOG_PATH}/all-%d{yyyy-MM-dd}-%i.log</fileNamePattern><!--日志文件保留天数 --><maxHistory>${MAX_HISTORY}</maxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><!--文件达到 最大时会被压缩和切割 --><maxFileSize>${MAX_FILE_SIZE}</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 指定级别 --><level>DEBUG</level></filter></appender><!-- ERROR 日志 --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!--日志名,指定最新的文件名,其他文件名使用FileNamePattern --><File>${LOG_PATH}/error.log</File><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><Pattern>${log.pattern}</Pattern></layout><!-- 设置字符集 --><charset>UTF-8</charset></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>${MAX_HISTORY}</maxHistory></rollingPolicy><!-- 此日志文件只记录ERROR级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 指定级别 --><level>ERROR</level><!-- onMatch:意思是>=指定级别 接受 --><onMatch>ACCEPT</onMatch><!-- onMismatch:意思是<指定级别 拒绝 --><onMismatch>DENY</onMismatch></filter></appender><!-- 异步日志输出看情况配置 --><appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender"><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>512</queueSize><!-- 添加附加的appender,最多只能添加一个 --><appender-ref ref="FILE" /></appender><appender name="ASYNC_ERROR_FILE" class="ch.qos.logback.classic.AsyncAppender"><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>512</queueSize><!-- 添加附加的appender,最多只能添加一个 --><appender-ref ref="ERROR_FILE" /></appender><!-- 统一配置日志输出,root标签和logger标签,如果这开启了就把不同环境的关上 --><!-- root标签:相当于开关,只有把定义的appender添加到这里 才会生效有日志 --><!-- <root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="ASYNC_FILE" /><appender-ref ref="ASYNC_ERROR_FILE" /></root> --><!-- logger标签:用来设置某一个包或者具体的某一个类的日志打印级别 --><!-- <logger name="com.test.springboot.admin" level="DEBUG" /> --><!-- 配置不同环境的日志输出,root标签和logger标签 --><springProfile name="dev"><logger name="com.zhubayi.mylog" level="info"/><root level="DEBUG"><appender-ref ref="CONSOLE" /><appender-ref ref="ASYNC_FILE" /><appender-ref ref="ASYNC_ERROR_FILE" /></root></springProfile><!-- <springProfile name="prod"><root level="INFO"><appender-ref ref="ASYNC_FILE" /><appender-ref ref="ASYNC_ERROR_FILE" /></root></springProfile> -->
</configuration>

注意:CONSOLE与FILE最后保持一致,不然日志文件会出现??乱码
若出现LOG_PATH_IS_UNDEFINED
把下面的改成

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

改为

<property name="log.filePath" value="D:\\mylog\\logs"/>

LOG_PATH_IS_UNDEFINED 解决相关推荐

  1. javaEE面试重点

    Hibernate工作原理及为什么要用? 原理: 1. 读取并解析配置文件 2. 读取并解析映射信息,创建SessionFactory 3. 打开Sesssion 4. 创建事务Transation ...

  2. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  3. 解决gitte提交报错 error: GE007: Your push would publish a private email address.

    错误情况: gitte提交报错,无法提交上去,报错如下: remote: Powered by GITEE.COM [GNK-6.0] remote: error: GE007: Your push ...

  4. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  5. 苹果设备iphone,ipad,macbook网络连接慢,开机开什么卡什么,一步解决

    苹果电脑网络连接慢,开机开什么卡什么??? 网络上的方法一种种,没有一个适用的? 如果你的macbook也是打开就没网,但有一些软件也能用,就是浏览器加载跑条儿,不妨试试! 系统偏好设置-网络-高级- ...

  6. Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决

    在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决

  7. 简单图文配置golang+vscode【win10/centos7+golang helloworld+解决install failed等情况】

    博客目录(阅读时间:10分钟) 一.win10 0.系统环境 1. win10配置golang环境 ①下载相关软件 ②创建gowork工作空间 ③配置环境变量(GOPATH+PATH) ④验证环境配置 ...

  8. dev c++ 调试时候发生软件崩溃解决办法

    dev c++ 调试时候发生软件崩溃解决办法 安装好dev cpp,准备调试的时候发现软件崩溃,这种情况很好解决.只要在工具菜单中点开编译选项,找到代码生成/优化一栏,将链接器的"产生调试信 ...

  9. Spring AOP + Redis解决重复提交的问题

    Spring AOP + Redis解决重复提交的问题 用户在点击操作的时候,可能会连续点击多次,虽然前端可以通过设置按钮的disable的属性来控制按钮不可连续点击,但是如果别人拿到请求进行模拟,依 ...

最新文章

  1. A/B测试:概念 ≠ 执行
  2. 创建的二叉树后续非递归遍历结果为_一入递归深似海,从此offer是路人
  3. 我的机器学习入门之路(上)——传统机器学习
  4. java foreach标签,jstl c:foreach标签
  5. Linxu的常用命令
  6. [蓝桥杯2016初赛]密码脱落
  7. matlab解带参数的积分方程组,方程组求解问题:方程组中有带参数的积分函数,求参数...
  8. java 前端工作内容_java前端、java后端、java全栈工作主要内容是什么?哪个薪资高?...
  9. [转载] 手工制作Win7 OEM版
  10. 基于sentinel湿地_基于Sentinel-1A雷达影像的崇明东滩芦苇盐沼植被识别提取
  11. ubuntu 上搭建lanp环境
  12. 12.1-12.5 LNMP架构介绍 , MySQL安装 , PHP安装, Nginx介绍
  13. uml点餐系统活动图_UML 活动图
  14. 谷歌眼镜公开接受预订,全新宣传视频帅爆了_-Chaz-_新浪博客
  15. sql 数据库练习, 学生表,成绩表
  16. 初探直播客户端(android)技术
  17. ConcurrentHashMap源码解析
  18. 【116】Python 保留字(关键字)、标识符
  19. Vue框架Vue-cli脚手架引入图片报错
  20. 赤峰中考计算机考试软件,2018赤峰中考信息技术与实验操作实施细则公布

热门文章

  1. 销售报表案例--如何应用Excel创建销售漏斗分析仪
  2. [Windows] 微软错误代码
  3. Smart200控制两台V90伺服,绝对定位和速度控制
  4. 问题解决:“nginx: [emerg] unknown directive “ “ in /etc/nginx/conf.d/XXX.conf:122”
  5. 论文研究12:DUAL-PATH RNN for audio separation
  6. 美IT业25大秘密:Facebook耗时一周建成
  7. 阿里云服务器ECS搭建后台(Windows Server 2012R2)
  8. Altium常用元件库,制作原理图使用,共1844个文件,500M+
  9. 学习java随堂练习-20220621
  10. 日活、周活(周重活)、月活 统计