SpringBoot使用自带的日志框架(开箱即用,同时输出到文件与控制台)

在SpringBoot内部中,默认就集成了LogBack的日志依赖,所以我们其实在实际开发中不需要直接添加该依赖。
你会发现spring-boot-starter其中包含了
spring-boot-starter-logging,Spring Boot为我们提供了很多默认的日志配置,所以,只要将spring-boot-starter-logging作为依赖加入到当前应用的classpath,则“开箱即用”。

本项目以springboot 2.7.5为例

目录

1.引入依赖

2.logback的日志等级

3.logback日志配置文件

4.如何在代码中使用日志输出

5.结果


1.引入依赖

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.5</version><relativePath/> <!-- lookup parent from repository --></parent>

2.logback的日志等级

日志级别从低到高分为:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL

3.logback日志配置文件

放在resources下即可

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><contextName>logback</contextName><!--控制台输出内容的颜色转换以及格式--><substitutionProperty name="logging.pattern.console"value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-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}"/><!--日志文件输出内容的格式--><substitutionProperty name="logging.pattern.file"value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/><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"/><!--输出到控制台--><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!--控制台使用layout节点--><layout class="ch.qos.logback.classic.PatternLayout"><pattern>${logging.pattern.console}</pattern></layout></appender><!--按天生成日志--><appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><Prudent>true</Prudent><!--滚动策略,我配置了按天生成日志文件--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--相对路径,生成的文件就在项目根目录下--><FileNamePattern>logs/%d{yyyy-MM}/%d{yyyy-MM-dd}.log</FileNamePattern><!--注意超过365天的日志文件会被删除,即使已经按天分开也会删除--><MaxHistory>365</MaxHistory></rollingPolicy><!--日志文件里只保存ERROR及以上级别的日志--><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter><!--文件使用encoder节点--><encoder><Pattern>${logging.pattern.file}</Pattern></encoder></appender><!--这个logger里的配置相当于之前yml里的logging.level.com.lpc: trace--><!--additivity的作用--><!--true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出--><!--而这个logger里没配置appender,所以得交给root打印--><!--所以com.lpc包里的日志从TRACE级别开始--><!--其他包里的日志根据root的配置从INFO级别开始打印--><logger name="com.lpc" level="TRACE" additivity="true"></logger><root level="INFO"><appender-ref ref="console"/><appender-ref ref="file"/></root></configuration>
  • contextName

每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用contextName标签设置成其他名字,用于区分不同应用程序的记录。

  • property

用来定义变量值的标签,property标签有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过property定义的值会被插入到logger上下文中。定义变量后,可以使“${name}”来使用变量。如上面的xml所示。

  • logger

用来设置某一个包或者具体的某一个类的日志打印级别以及指定appender。

  • root

根logger,也是一种logger,且只有一个level属性。

  • appender

负责日志的组件。

4.如何在代码中使用日志输出

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class Test {private static final Logger LOGGER = LoggerFactory.getLogger(Test .class);public static void main(String[] args) {LOGGER.info("这是一条log数据"+i);try{} catch (Exception e) {LOGGER.info("错误信息:" + e.getMessage());}}
}

当然,如果有引入lombok的话,可以更简单

引入lombok

        <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>

@Slf4j
public class Test{public String getInfo() {log.info("日志信息");}
}

5.结果

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】C的面向对象

一、BREW接口实现 高通的BREW&#xff08;Binary Runtime Environment for Wireless&#xff09;是一个早期为手机设备开发的应用程序平台&#xff0c;用于开发在CDMA手机上运行的软件。尽管这个平台目前已经不太流行&#xff0c;但是在其使用高峰时期&#xff0c;开发者需要使…

【正点原子STM32连载】第十三章 串口通信实验 摘自【正点原子】APM32E103最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子APM32E103最小系统板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第十…

怎么AI智能抠图?这几个抠图工具别错过!

怎么AI智能抠图&#xff1f;智能抠图是一种利用人工智能和计算机视觉技术来自动化地分离图像中的前景物体与背景的技能。智能抠图可以节省人工抠图的时间和精力&#xff0c;传统的抠图过程需要使用专业图像编辑软件&#xff0c;手动勾勒物体边缘并擦除背景&#xff0c;既耗时又…

Java---Collection讲解(一)

文章目录 1. 集合体系结构2. Collection集合概述和使用3. Collection集合的遍历4. 小案例分析5. List集合概述和特点6. List集合的特有方法7. 小案例分析 1. 集合体系结构 集合体系结构如下所示。在实现时我们需要使用接口的具体实现类。 2. Collection集合概述和使用 1. Colle…

Golang学习之路一开山篇

Golang学习之路一开山篇 初识 Golang 我第一次接触 Golang 是在2016年, 当时在深圳工作, 项目需要用Golang, 当时在犹豫要不要学还是走, 毕竟Java开发搞了很多年了, 说放弃还是有难度的, 其实也不是放弃Java, 说不定其他项目还是要使用Java. 在领导的再三劝说下, 开启了Golan…

CentOS 防火墙管理及使用的redis基本常用命令

文章目录 防火墙管理使用systemctl管理防火墙启动、关闭使用firewalld-cmd配置访问防火墙策略firewalld配置文件修改限制来源IP docker使用 redis 防火墙管理 需要关闭防火墙或者开启对应端口 使用systemctl管理防火墙启动、关闭 启动防火墙&#xff1a; systemctl start fi…

03进程基础-学习笔记

Process 进程 进程为操作系统的基本调度单位&#xff0c;占用系统资源(cpu,内存)完成特定任务&#xff0c;所有说进程是操作系统的标准执行单元 进程与程序的差别 程序是静态资源&#xff0c;存储与电脑磁盘中(disk磁盘资源)程序执行后会创建进程&#xff0c;负责完成功能&a…

5.1 Linux SSH 服务

1、Telnet 传统的远程连接管理基本上都采用telnet&#xff0c;但是telnet在本质上都是不安全的&#xff0c;因为它们在网络上用明文传送口令和数据&#xff0c;别有用心的人非常容易就可以截获这些口令和数据。而且&#xff0c;这些服务程序的安全验证方式也是有其弱点的&…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(四)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xff08;一&#xff09; 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

jmeter,断言:响应断言、Json断言

一、响应断言 接口A请求正常返回值如下&#xff1a; {"status": 10013, "message": "user sign timeout"} 在该接口下创建【响应断言】元件&#xff0c;配置如下&#xff1a; 若断言成功&#xff0c;则查看结果树的接口显示绿色&#xff0c;若…

【期末复习向】n元gram的应用

当 n 1 时&#xff0c; 即出现 在 第 i 位 上 的基 元 w i 独 立于 历 史 。 一元文法也 被 写 为 uni-gram 或 monogram&#xff1b; 当 n 2 时 , 2-gram ( bi-gram ) 被称 为 1 阶 马 尔 可夫 链&#xff1b; 当 n 3 时 , 3-gram( tri-gram ) 被称为 2 阶马尔 可 夫 链 &am…

平面腔体谐振计算与仿真

PCB的电源网络是由电介质材料隔开的两个平行金属板所组成&#xff0c;可以通过以下的3种方法对其谐振模式进行分析&#xff1a; 1. 基于腔体模型的计算&#xff1b; 2. 基于SPICE等效电路&#xff1b; 3. 基于全波数值电磁算法的3D模型。 设计得当的前提下&#xff0c;上述3种方…