SpringBoot日志集成-LogBack

  • Log4J:最早的Java日志框架之一,由Apache基金会发起,提供灵活而强大的日志记录机制
  • JDK自带的日志框架:java.util.logging.Logg,是JDK1.4之后提供的日志API,已淘汰
  • logback: logback一个开源的日志框架,log4j作者为了代替log4j而开发的,SpringBoot默认的日志系统,也是目前性能最好的日志系统,推荐使用
  • slf4j: slf4j不能称之为一个日志框架,因为它仅仅提供了一系列的规范,提供一系列接口,但没有实现,采用的门面模式,底层可以采用logback,log4j等具体实现

日志级别

  • 日志级别是指记录日志信息的重要程度,用于限制输出日志的详细程度,不同的日志级别会对应不同的日志输出,SpringBoot默认日志级别是INFO
  • 日志级别介绍:IOFO是默认的日志级别,我们可以在代码中对日志的级别进行设置,低于设置级别的日志就会被忽略
    • TRACE:普通微量的日志,级别最低的日志信息
    • DEBUG:调试的时候的日志信息。TRACE和DEBUG级别的日志主要是对系统每一步的运行状态进行精确到记录。通过这种记录,可以查看某个操作每一步的执行情况,可以精确定位问题所在,MyBatis的SQL语句就需要在此级别下才会打印
    • INFO:普通的日志信息,记录系统正常运行的状态,日志的默认级别
    • WARN:警告日志,出现的问题不影响使用,但需要注意
    • ERROR:错误信息,级别较高的错误日志信息。这个级别的错误需要马上人工介入处理,但紧急程度低于fatal.ERROR和FATAL都是服务器自己的异常,像用户自己的操作不当等不应该被记为ERROR日志
    • FATAL:致命错误,最高日志级别,表示需要立即被处理的系统级错误。当该错误发生时,表示服务已经出现了不可用,也可以说服务挂了,需要技术人员立即介入处理。一般情况下,一个进程的生命周期中应该只记录一次fatal级别的日志,即进程遇到无法恢复的错误推出执行时

Logback实战

1.application.yml配置

logging:level:root: error #配置全局打印日志等级为errorcn.lgc: trace #配置自己编写代码日志等级为tracepattern:file: "%d [%thread] %-5level %c %M %L: %msg%n"  #输出到文件的格式console: "%d [%thread] %-5level %c %M %L: %msg%n"  #编写打印到控制台日志的格式file:name: lgc.logs #日志同步到文件的路径

2.配置文件

Logback日志文件名称规范,取其他名称不生效

  • logback-spring.xml
  • logbak-spring.proovy
  • logback.xml
  • logback.proovy
Logback配置
<?xml version="1.0" encoding="UTF-8" ?><!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
<!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志 -->
<!-- scan 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
<!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false"><!-- 动态日志级别 --><jmxConfigurator/><!--*****************************************************************************--><!--自定义项 开始--><!--*****************************************************************************--><!-- 定义日志文件 输出位置 --><property name="log.home_dir" value="./logs"/><property name="log.app_name" value="neuronet"/><!-- 日志最大的历史 30天 --><property name="log.maxHistory" value="30"/><property name="log.maxSize" value="5MB"/><!-- 日志界别 --><property name="log.level" value="info"/><!-- 打印sql语句 需要指定dao层包的位置 --><property name="mapper.package" value="cn.itsource.mapper" /><!--*****************************************************************************--><!--自定义项 结束--><!--*****************************************************************************--><!-- 彩色日志 --><!-- 彩色日志依赖的渲染类 --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /><conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /><conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /><!-- 彩色日志格式 --><property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!-- ConsoleAppender 控制台输出日志 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><!--设置日志输出格式--><pattern>${CONSOLE_LOG_PATTERN}</pattern><!-- 设置字符集 --><charset>UTF-8</charset></encoder></appender><!-- ERROR级别日志 --><!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender --><appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 过滤器,只记录WARN级别的日志 --><!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 --><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.SizeAndTimeBasedRollingPolicy"><!--日志输出位置 可相对、和绝对路径 --><fileNamePattern>${log.home_dir}/error/%d{yyyy-MM-dd}/${log.app_name}-%i.log</fileNamePattern><!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,且<maxHistory>是6,则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 --><maxHistory>${log.maxHistory}</maxHistory><!--日志文件最大的大小--><MaxFileSize>${log.maxSize}</MaxFileSize></rollingPolicy><encoder><pattern><!-- 设置日志输出格式 -->%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- WARN级别日志 appender --><appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 过滤器,只记录WARN级别的日志 --><!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 设置过滤级别 --><level>WARN</level><!-- 用于配置符合过滤条件的操作 --><onMatch>ACCEPT</onMatch><!-- 用于配置不符合过滤条件的操作 --><onMismatch>DENY</onMismatch></filter><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志输出位置 可相对、和绝对路径 --><fileNamePattern>${log.home_dir}/warn/%d{yyyy-MM-dd}/${log.app_name}-%i.log</fileNamePattern><maxHistory>${log.maxHistory}</maxHistory><!--当天的日志大小 超过MaxFileSize时,压缩日志并保存--><MaxFileSize>${log.maxSize}</MaxFileSize></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- INFO级别日志 appender --><appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${log.home_dir}/info/%d{yyyy-MM-dd}/${log.app_name}-%i.log</fileNamePattern><maxHistory>${log.maxHistory}</maxHistory><MaxFileSize>${log.maxSize}</MaxFileSize></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern></encoder></appender><!-- DEBUG级别日志 appender --><appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${log.home_dir}/debug/%d{yyyy-MM-dd}/${log.app_name}-%i.log</fileNamePattern><maxHistory>${log.maxHistory}</maxHistory><MaxFileSize>${log.maxSize}</MaxFileSize></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern></encoder></appender><!-- TRACE级别日志 appender --><appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>TRACE</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${log.home_dir}/trace/%d{yyyy-MM-dd}/${log.app_name}-%i.log</fileNamePattern><maxHistory>${log.maxHistory}</maxHistory><MaxFileSize>${log.maxSize}</MaxFileSize></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern></encoder></appender><!--设置一个向上传递的appender,所有级别的日志都会输出--><appender name="app" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${log.home_dir}/app/%d{yyyy-MM-dd}/${log.app_name}-%i.log</fileNamePattern><maxHistory>${log.maxHistory}</maxHistory><MaxFileSize>${log.maxSize}</MaxFileSize></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern></encoder></appender><!--org.springframework.web包下的类的日志输出--><logger name="org.springframework.web" additivity="false" level="WARN"><appender-ref ref="WARN"/></logger><!--dao层包下的类的日志输出--><logger name="${mapper.package}" additivity="false" level="DEBUG"><appender-ref ref="app"/><appender-ref ref="ERROR"/><!--打印控制台--><appender-ref ref="CONSOLE"/></logger><!-- root级别   DEBUG --><root><!-- 打印debug级别日志及以上级别日志 --><level value="${log.level}"/><!-- 控制台输出 --><appender-ref ref="CONSOLE"/><!-- 不管什么包下的日志都输出文件 --><!--<appender-ref ref="ERROR"/>--><!--<appender-ref ref="INFO"/>--><!--<appender-ref ref="WARN"/>--><!--<appender-ref ref="DEBUG"/>--><!--<appender-ref ref="TRACE"/>--></root></configuration>

3.使用

1.注入日志对象
 private Logger loggerFactory = LoggerFactory.getLogger(AopTest.class);
2.@Slf4j注解

导入lombk包后,只用在类上面加@Slf4j注解,调用log对象使用

log.trace("trace");log.debug("debug");log.info("info");log.warn("warn");log.error("error");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1548277.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java ERP管理系统源码解析:微服务架构实践Spring Cloud Alibaba与Spring Boot

在当今数字化浪潮的推动下&#xff0c;企业对于高效、稳定且易于扩展的管理系统需求日益增长。为了满足这一需求&#xff0c;我们精心打造了一款基于Java技术的鸿鹄ERP&#xff08;Enterprise Resource Planning&#xff09;管理系统。该系统充分利用了Spring Cloud Alibaba、S…

猫头虎 分享已解决Bug: || Module not found: Can‘t resolve ‘react‘ 解决方案

&#x1f42f;猫头虎 分享已解决Bug&#xff1a; || Module not found: Cant resolve react 解决方案 摘要: 今天猫头虎带大家解决一个常见的前端问题&#xff0c;尤其是在 React 项目中&#xff0c;很多开发者在安装依赖包时&#xff0c;遇到过 Module not found: Cant resol…

2024年9月第4周AI资讯

阅读时间&#xff1a;3-4min 更新时间&#xff1a;2024.9.23-2024.9.27 目录 o1 处于OpenAI的AGI5阶段的第2阶段 微软使用核燃料推动AI发展 阿里巴巴和英伟达在自动驾驶方向合作 Meta 推出 AR xAI 眼镜、新型号 o1 处于OpenAI的AGI5阶段的第2阶段 概要 OpenAI 首席执行官 …

智能抠图怎么操作?4款不动手自动抠图的智能神器分享

对于资深的图片设计师们来说&#xff0c;抠图是他们必备的基础技能&#xff0c;没几下功夫就能在PS中操作完成。 然而对于小编这种修图小白来讲&#xff0c;拥有一款傻瓜式智能抠图免费软件&#xff0c;才是硬道理&#xff01; 小到简单的图形文字、大到飞扬细碎的毛发&#…

MySQL第11讲--多表查询的介绍

文章目录 前言多表关系多表查询概述多表查询的分类连接查询内链接外链接自连接 联合查询子查询标量子查询列子查询行子查询表子查询 前言 在MySQL第10讲–约束的介绍中讲了数据库的几种约束条件&#xff1a;非空约束、唯一约束、主键约束、外键约束、检查约束、默认约束。下图对…

Splashtop 加入 Microsoft 智能安全协会

2024年9月25日 美国加利福尼亚州库比蒂诺 Splashtop Inc . 今天宣布已正式加入 Microsoft 智能安全协会&#xff08;MISA&#xff09;。MISA 由独立软件供应商&#xff08;ISV&#xff09;和托管安全服务提供商&#xff08;MISA&#xff09;组成&#xff0c;他们将其解决方案与…

渗透测试-文件上传绕过思路

文件上传绕过思路 引言 分享一些文件上传绕过的思路&#xff0c;下文内容多包含实战图片&#xff0c;所以打码会非常严重&#xff0c;可多看文字表达&#xff1b;本文仅用于交流学习&#xff0c; 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#x…

深度解析APP软件开发:构建卷轴式分销系统的实践探索

在移动互联网的浪潮中&#xff0c;APP软件的开发与应用不断推动着商业模式的创新与发展。其中&#xff0c;卷轴模式分销系统作为一种新兴的营销手段&#xff0c;正逐渐受到市场的青睐。作为程序员&#xff0c;深入探索并实践这一模式的系统开发&#xff0c;不仅是对技术能力的挑…

C++ STL初阶(14): map和set

1.关联式容器与键值对 前导文章&#xff1a;C 二叉树进阶-CSDN博客 之前我们学习的线性的容器&#xff0c;如&#xff1a;vector deque list等都叫作序列式容器 与之对立的概念是关联式容器 关联式容器 也是用来存储数据的&#xff0c;与序列式容器不同的是&#xff0c;其 里面…

【Linux】图解详谈HTTPS的安全传输

文章目录 1.前置知识2.只使用对称加密3.只使用非对称加密 因为私钥加密只能公钥解开&#xff0c;公钥加密只能私钥解开4.双方都是使用非对称加密5.非对称加密 对称加密6.非对称加密对称加密CA认证&#xff08;一&#xff09;CA认证&#xff08;二&#xff09;https &#xff0…

Ks渲染做汽车动画吗?汽车本地渲染与云渲染成本分析

Keyshot是一款强大的实时光线追踪和全域光渲染软件&#xff0c;它确实可以用于制作汽车动画&#xff0c;包括汽车模型的渲染和动画展示。Keyshot的动画功能允许用户创建相机移动、物体变化等动态效果&#xff0c;非常适合用于汽车动画的制作。 至于汽车动画的渲染成本&#xff…

手机如何五开玩梦幻西游端游?用GameViewer远程手机免费畅玩梦幻西游

用手机就能免费玩梦幻西游端游&#xff0c;还可以随时查看挂机进度&#xff01; 想要实现这一点&#xff0c;就用网易GameViewer远程&#xff0c;而且不光手机可以玩梦幻西游端游&#xff0c;平板也能免费玩&#xff0c;并为你实现五开玩梦幻西游端游。 那么&#xff0c;通过Ga…

[001-03-007].第28节:SpringBoot整合Redis:

6.1.Redis的介绍&#xff1a; 1.Redis 是一个开源&#xff08;BSD许可&#xff09;的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。2.它支持多种类型的数据结构&#xff0c;如 字符串&#xff08;strings&#xff09;&#xff0c; 散…

Python制作进度条,18种方式全网最全!(不全去你家扫厕所!)

想象一下&#xff0c;你的程序在执行复杂任务时&#xff0c;不再是冷冰冰的等待光标&#xff0c;而是伴随着色彩斑斓、动态变化的进度条&#xff0c;不仅让等待变得有趣&#xff0c;更让用户对你的作品刮目相看。从基础的文本进度条到高级的图形界面进度条&#xff0c;从简单的…

Excel FIND函数用法详解,附FIND函数提取文本示例

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f50e; 在处理文本数据时&#xff0c;我们经常需要在字符串中查找特定词语或字符的位置。Excel中的FIND函数是一个非常实用的工具&#xff0c;可以帮助我们在文本字符串中查找子字符串的位置。今天&#xff0c;我们将…

Ubuntu环境下字体安装

本文介绍Ubuntu环境下字体安装。 软件&#xff08;如Qt应用软件&#xff09;开发过程中经常会涉及到字体的选择&#xff0c;有时候Ubuntu环境下并没有我们想要的字体&#xff0c;本文介绍常用字体及在Ubuntu环境下如何安装。 1.常用开源字体 有些字体商用并不是免费的&#…

【解答篇】什么是SSL证书?它为什么很重要?

什么是SSL证书&#xff1f;它为什么很重要&#xff1f; 1 数据保护的金钟罩2 身份验证的守护者3 信任度与SEO的双重提升4 合规经营的必要条件5 某宝案例 SSL证书&#xff0c;全称安全套接层证书&#xff0c;是互联网安全通信的坚固基石。它并非仅仅是一份文档&#xff0c;而是用…

落魄前端搞副业之 改造淘宝首页(淘宝换肤)

事情发生是这样的: 无意间看到一个淘宝的网页版本换肤大赛, 本来我也是不懈看一眼的. 一脸高傲. 因为各种比赛, 要么就是对手太厉害, 拿不到奖, 要么就是主办方潜规则多, 最终坑人. 那, 按照我的性子, 那必然不会参加啊, /高傲 (奖金不多, 设计开发麻烦, 竞争还大, 说不定还…

智能制造的生产力基础设施

由于全球大多数细分市场的半导体工厂都满负荷运转&#xff0c;因此&#xff0c;生产力如今成为整个行业关注的重要问题也就不足为奇了。工厂经理会仔细监控关键绩效指标 (KPI)&#xff0c;以发现任何生产力下降的迹象&#xff0c;以便快速做出反应&#xff0c;找出并解决这些偏…

Metasploit渗透测试之服务端漏洞利用

简介 在之前的文章中&#xff0c;我们学习了目标的IP地址&#xff0c;端口&#xff0c;服务&#xff0c;操作系统等信息的收集。信息收集过程中最大的收获是服务器或系统的操作系统信息。这些信息对后续的渗透目标机器非常有用&#xff0c;因为我们可以快速查找系统上运行的服…