springboot默认会加载classpath:logback-spring.xml文件
如果需要自定义文件名称,在application.properties中配置logging.config 选项即可
在 src/main/resources 下创建 logback-spring.xml 文件,内容如下

要打印一个类的日志用 lombok(比传统的类打印日志配置简单、方便)
在需要打印日志的类上添加日志的注解
@Slf4j 是import lombok.extern.slf4j.Slf4j;包的,别引错包

在类中要输出的地方用

原本要输出的内容System.out.println(this.getId());用下面打印日志的方式代替// {}就是占位符,会将this.getId放入{}中打印输出,可以添加多个,例如第二句,“就是get到的id”这句话会添加到第二个{}后面
log.info("info级别的日志:{}",this.getId());
log.info("info级别的日志:{}","我的id是:{}",this.getId(),"就是get到的id");

将日志打印到控制台

<?xml version="1.0" encoding="UTF-8"?>
<!--configuration:根节点,以下3个属性都是根节点的配置,一般用默认参数即可-->
<!--scan(扫描): 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true-->
<!--scanPeriod:多长时间扫描一次,默认60毫秒扫描一次-->
<!--debug:为true时打印出logback内部日志信息,实时查看logback运行状态,默认是false-->
<!--日志分几个级别:debug(输出调试信息,一般情况应用程序不会使用debug日志)、info(输出主要信息)、error(输出错误信息)-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--property:子节点,定义一个变量-->
<!--name:LOG_PATH日志定义在哪个文件下-->
<property name="LOG_PATH" value="./logs"></property><!--appender:指定日志输出的目的地,目的地可以是控制台、文件等--><!--ConsoleAppender:控制台输出--><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!--layout:布局,输出的日志布局是什么,负责把事件转换成字符串,格式化的日志信息输出--><layout><!--%d:日期,代表几月几日输出的--><!--%thread:线程名,web工程都是多线程--><!--%5-level:代表输出级别;级别从左显示5个字符宽度--><!--%logger{35}:打出的类名最长35个字符,否则按照句点分割--><!--%msg:日志消息--><!--%n:换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</pattern></layout></appender><!--root:根节点设置日志级别,设置使用哪些根节点,使用的是appender节点name的值--><root level="info"><appender-ref ref="STDOUT"></appender-ref></root>
</configuration>

输出的日志与表达式相同顺序

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n

将日志打印到文件

<?xml version="1.0" encoding="UTF-8"?><configuration debug="false"><appender name="FILE" class="ch.qos.logback.core.FileAppender"><file>${LOG_PATH}/testFile.log</file><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -
%msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="FILE" /></root></configuration>

有以下子节点:

<file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
<append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
<encoder>:对记录事件进行格式化。
<prudent>:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。

执行完毕之后,根目录的logs文件夹下就有了该testFile.log文件,文件的打印格式就是

 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -
%msg%n</pattern>

自动备份RollingFileAppender

滚动记录文件,先将日志记录到指定文件,
当符合某个条件时(日期、日志大小、存储天数),将日志记录到其他文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="LOG_PATH" value="./logs"></property>
<appender name="MAXDATEFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><fileNamePattern>${LOG_PATH}/logFile.%d{yyyy-MM-dd}.log</fileNamePattern><!--日志文件保留天数--><maxHistory>30</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -%msg%n</pattern></encoder><!--当文件大于10MB时,生成新的日志文件--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy>
</appender>
<!--root:根节点设置日志级别,设置使用哪些根节点,使用的是appender节点-->
<root level="info"><appender-ref ref="MAXDATEFILE"></appender-ref>
</root>
</configuration>

打印错误日志

<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
<layout>
<pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern>
</layout>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch>
</filter>
</appender>

打印错误日志要在日志输出中加上error级别的输出:

log.error("这是错误日志");

日志级别

info级别: info error
debug级别:info debug error
error级别:error
trace级别:trace info debug error

log日志:打印日志到控制台、文件、日志文件分区、打印错误日志到文件相关推荐

  1. 自己放某个文件到/cache分区,重启后发现文件消失了,那么是怎么消失的呢?【转】

    自己放某个文件到/cache分区,重启后发现文件消失了,那么是怎么消失的呢? Step 1. packages\providers\DownloadProvider\src\com\android\p ...

  2. 修复压缩文件提示:现校验和错误。该文件已损坏

    解压RAR文件是提示, 不可预料的压缩文件末端 如图 我们可以使用工具来修复 链接:http://pan.baidu.com/s/1cD8Mqq 密码:24dm 操作很简单,点击右侧按钮选择需要修复的 ...

  3. php 5.4日志文件在哪里,我的错误日志文件在哪里?(Where are my error log files?)

    I'm currently encountering the problem described in this older Stackoverflow post. I notice that one ...

  4. VFP6.0运行exe文件后显示:程序错误 “不能存取文件”

    原因:打开了多个VFP程序 解决方法:将除exe之外其他的VFP文件全部关闭即可

  5. Oracle操作语句(PL/SQL)创建表空间:第 1 行出现错误: ORA-01119: 创建数据库文件时出错 ORA-27040: 文件创建错误, 无法创建文件OSD-04002: 无法打开文件

    1.题目要求: 2.遇到的问题情况: 3.问题分析: 创建表空间时指定的文件目录地址出错 4.解决问题(解决方法): 问:既然是路径出错,那么就找到正确的路径即可,那么正确路径是什么呢? 答:是自己P ...

  6. 在 Java 项目中打印错误日志的正确姿势,排查问题更方便,非常实用!

    在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导.但是在实际中打的错误日志内容和格式变化多样,错误提示上可能残缺不全.没有相关背景.不明其义,使得排查解决问题成为非常不方便或 ...

  7. Java项目中这样打印错误日志,排查问题更高效

    在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导.但是在实际中打的错误日志内容和格式变化多样,错误提示上可能残缺不全.没有相关背景.不明其义,使得排查解决问题成为非常不方便或 ...

  8. 在Java项目中打印错误日志的正确姿势,排查问题更方便,非常实用!

    作者:琴水玉 cnblogs.com/lovesqcc/p/4319594.html 在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导.但是在实际中打的错误日志内容和格式变化 ...

  9. error 系统错误 错误码10007_在Java项目中打印错误日志的正确姿势,排查问题更方便,非常实用!...

    作者:琴水玉 cnblogs.com/lovesqcc/p/4319594.html 在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导. 但是在实际中打的错误日志内容和格式变 ...

  10. ios 打印 详细错误日志_【专家专栏】林相宇 | IOS错误日志抓取和分析

    原标题:[专家专栏]林相宇 | IOS错误日志抓取和分析 在调试自己和别人的IOS App时,发生Crash是非常正常的情况,分析这些Crash的主要手段之一就是分析Crash发生时产生的错误日志.对 ...

最新文章

  1. 前15天mysql_Mysql查询今天/昨天/15天前/上个月/去年/上周每日等函数
  2. js判断对象是否是json对象
  3. 原神服务器维护后抽奖池会更新吗,原神:武器池改动,玩家的诉求再次得到反馈!PS端将与官服互通!...
  4. python-内置函数-数学函数
  5. 为什么开源应该是云原生环境的首选
  6. MAC下ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  7. oracle中with子句的用法(转)
  8. springmvc以html作为视图_SpringMVC如何自定义视图
  9. 机器人对话常用语模板_电话机器人的销售能力
  10. 中国各种茶叶及功效(绿茶\红茶\花茶\乌龙茶\白茶\砖茶)
  11. 寻找不能拼读的汉语拼音
  12. Python实现1~100猜数字小游戏
  13. android 9 申请动态权限android.permission.WRITE_EXTERNAL_STORAGE 允许后应用闪退
  14. vm虚拟机下ubuntu 联网方式
  15. @Inject和@Named
  16. 吉大计算机学院宣讲,计算机科学与技术学院“喜迎十九大,争做学校宣传员”寒假社会实践系列报道(十六)...
  17. 智联招聘自动刷新简历软件
  18. android p2p 视频通话,GitHub - wutonglei/webrtc_android: P2P Webrtc VideoConference 视频通话 视频会议...
  19. 【答辩问题】计算机专业本科毕业设计答辩的问题及回答
  20. android聊天界面与功能,【android】聊天界面的制作-简易版实现

热门文章

  1. 教师查询系统C语言,C语言教师管理系统代码
  2. 倾角传感器的精度和线性误差的区别
  3. WINCE快捷方式结构
  4. 脑洞大开的思维工具:PMI
  5. [P3374 【模板】树状数组 1](单点修改,区间查询)
  6. 人工智能笔记之专业选修课4.1.5 - 博弈论 9.重复博弈,效用,随机博弈
  7. 基于Html5 的canvas容器实现定制印章(圆形、椭圆、方形)
  8. 关于Java文件路径问题
  9. win10 uwp 关联文件
  10. 数据库学习2 排序检索数据