当前位置: 首页 > news >正文

Logback

Logback

简介

SpringBoot 内置日志框架
用来自定义控制台日志输出样式、生成日志文件

使用

由于是内置所以不需要引入,稍加配置就可以直接使用。

内置源头查看

在这里插入图片描述
在这里插入图片描述

配置application.yml

# 日志配置
logging:level:com.ruoyi: @logging.level@org.springframework: warnconfig: classpath:logback-plus.xml
  • com.ruoyi包下是@logging.level@级别的日志
  • org.springframework包下是warn级别
  • 使用logback-plus.xml作为日志的配置(自定义)

定义pom.xml

<profiles><profile><id>local</id><properties><!-- 环境标识,需要与配置文件的名称相对应 --><profiles.active>local</profiles.active><logging.level>info</logging.level></properties></profile><profile><id>dev</id><properties><!-- 环境标识,需要与配置文件的名称相对应 --><profiles.active>dev</profiles.active><logging.level>info</logging.level></properties><activation><!-- 默认环境 --><activeByDefault>true</activeByDefault></activation></profile><profile><id>prod</id><properties><profiles.active>prod</profiles.active><logging.level>warn</logging.level></properties></profile></profiles>

dev环境使用 info级别的日志,默认 dev 环境,prod 环境使用 warn级别的日志

Java 中获取并使用日志记录器

//创建测试Controller 路径为 com.ruoyi.demo.controller.LogController
Logger logger = LoggerFactory.getLogger("com.ruoyi.demo.controller.LogController")
Logger logger = LoggerFactory.getLogger(LogController.class)
logger.trace("跟踪")
logger.debug("调试")
logger.info("信息")
logger.warn("警告")
logger.error("错误")

日志级别从低到高排序 trace < debug < info < warn < error
在 application.yml里面配置过com.ruoyi包下日志级别是 @logging.level@
当前我们激活的是 dev 环境,pom.xml里面定义了 dev 环境激活的日志级别是info
所以当前logger只会打印 info及以上级别的日志

日常:使用 @Slf4j 注解,直接写在类上,Lombok会自动一个日志记录器 log ,直接调用log.info(“信息”)等等同上。

logback-plus.xml

大体上就是< property >可理解为定义变量,< appender >可理解为日志输出组件,调用变量来控制日志输出的目的地、同时可以自定义配置输出的格式、文件名、最大限制、最大历史记录、过滤级别,循环的策略等等,< root >用来定义全局都使用相同的日志输出组件配置。

使用上基本就是复制粘贴,有自己个性化的需求在对照官网进行修改即可 ==> Logback 官网

<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="log.path" value="./logs"/><property name="console.log.pattern"value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/><property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${console.log.pattern}</pattern><charset>utf-8</charset></encoder></appender><!-- 控制台输出 --><appender name="file_console" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-console.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/sys-console.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大 1天 --><maxHistory>1</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 过滤的级别 --><level>INFO</level></filter></appender><!-- 系统日志输出 --><appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-info.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/sys-info.%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><appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-error.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/sys-error.%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>ERROR</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><!-- info异步输出 --><appender name="async_info" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>512</queueSize><!-- 添加附加的appender,最多只能添加一个 --><appender-ref ref="file_info"/></appender><!-- error异步输出 --><appender name="async_error" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>512</queueSize><!-- 添加附加的appender,最多只能添加一个 --><appender-ref ref="file_error"/></appender><!--系统操作日志--><root level="info"><appender-ref ref="console" /><appender-ref ref="async_info" /><appender-ref ref="async_error" /><appender-ref ref="file_console" /></root></configuration>

UP!

http://www.lryc.cn/news/461314.html

相关文章:

  • Sub - Adjacent Transformer — 对AT的有趣改进
  • 『Mysql集群』Mysql高可用集群之主从复制 (一)
  • PHP获取图片属性(size, width, 和 height)的函数
  • MySQL启动失败解决方案
  • Spring Boot中使用MyBatis-Plus和MyBatis拦截器来实现对带有特定注解的字段进行AES加密。
  • Python GUI 编程:tkinter 初学者入门指南——框架、标签框架
  • Mac 远程 Windows 等桌面操作系统工具 Microsoft Remote Desktop for Mac 下载安装详细使用教程
  • 初级网络工程师之从入门到入狱(四)
  • MinIO配置与使用
  • 【漏洞复现】SpringBlade menu/list SQL注入漏洞
  • 物联网智能项目(含案例说明)
  • 【YOLOv8改进】 YOLOv8 更换骨干网络之GhostNetV3步骤详解
  • 成绩查询小程序,家长查分超方便~
  • 鸿蒙开发(NEXT/API 12)【上传下载文件】远场通信场景
  • 快速理解AUTOSAR CP的软件架构层次以及各层的作用
  • 【Unity】Unity中接入Admob聚合广告平台,可通过中介接入 AppLovin,Unity Ads,Meta等渠道的广告
  • PythonExcel批量pingIP地址
  • 软媒市场新蓝海:软文媒体自助发布与自助发稿的崛起
  • 【笔记】Day2.5.1查询运费模板列表(未完
  • 阿基米德螺旋线等距取点
  • 2024年全球增强现实(AR)市场分析报告
  • 探索 NetworkX:Python中的网络分析利器
  • Python知识点:基于Python技术,如何使用AirSim进行无人机模拟
  • 《中国林业产业》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 私域流量下的白酒新传奇:半年破五千万的营销策略揭秘
  • Tomcat 配置:方便运行 Java Web 项目
  • Spring Boot知识管理:机器学习与AI集成
  • Superset SQL模板使用
  • 算法工程师重生之第二十七天(合并区间 单调递增的数字 监控二叉树 总结)
  • 前端开发基础NodeJS+NPM基本使用(零基础入门)