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.rhkb.cn/news/217723.html

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

相关文章

常见的Linux基本指令

目录 什么是Linux&#xff1f; Xshell如何远程控制云服务器 Xshell远程连接云服务器 Linux基本指令 用户管理指令 pwd指令 touch指令 mkdir指令 ls指令 cd指令 rm指令 man命令 cp指令 mv指令 cat指令 head指令 ​编辑 tail指令 ​编辑echo指令 find命令 gr…

【算法题】N进制减法(js)

返回结果-1 const str "2 11 1"; const str1 "8 07 1"; const str2 "16 af ff"; function solution(str) {const [n, minuend, subtrahend] str.split(" ");if (n < 2 || n > 35) return -1;else if (isValid(minuend) &am…

人工智能中的文本分类:技术突破与实战指导

在本文中&#xff0c;我们全面探讨了文本分类技术的发展历程、基本原理、关键技术、深度学习的应用&#xff0c;以及从RNN到Transformer的技术演进。文章详细介绍了各种模型的原理和实战应用&#xff0c;旨在提供对文本分类技术深入理解的全面视角。 关注TechLead&#xff0c;分…

探索SSL证书的应用场景,远不止网站,还有小程序、App Store等

说到SSL证书&#xff0c;我们都知道其是用于实现HTTPS加密保障数据安全的重要工具&#xff0c;在建设网站的时候经常会部署SSL证书。但实际上&#xff0c;SSL证书的应用场景远不止网站&#xff0c;它还被广泛地应用到小程序、App Store、抖音广告、邮件服务器以及各种物联网设备…

web网络安全

web安全 一&#xff0c;xss 跨站脚本攻击(全称Cross Site Scripting,为和CSS&#xff08;层叠样式表&#xff09;区分&#xff0c;简称为XSS)是指恶意攻击者在Web页面中插入恶意javascript代码&#xff08;也可能包含html代码&#xff09;&#xff0c;当用户浏览网页之时&…

html中一个div中平均一行分配四个盒子,可展开与收起所有的盒子

html中一个div中平均一行分配四个盒子&#xff0c;可展开与收起所有的盒子 1.截图显示部分 2.代码展示部分 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

测长机:精度与用途解析

测长机是一种用于测量物体长度或距离的专业测量仪器&#xff0c;而且测量结果能够稳定且可靠。其精度是衡量其优劣的重要标准之一。 在制造业中&#xff0c;长度尺寸是所有几何量尺寸测量的基准。通过测量产品的长度&#xff0c;可以及时发现并纠正尺寸偏差&#xff0c;保证产…

JVM的内存分区以及垃圾收集

1.JVM的内存分区 1.1方法区 方法区(永久代&#xff09;主要用来存储已在虚拟机加载的类的信息、常量、静态变量以及即时编译器编译后的代码信息。该区域是被线程共享的。 1.2虚拟机栈 虚拟机栈也就是我们平时说的栈内存&#xff0c;它是为java方法服务的。每个方法在执行的…

Vue--第八天

Vue3 1.优点&#xff1a; 2.创建&#xff1a; 3.文件&#xff1a; 换运行插件&#xff1a; 4.运行&#xff1a; setup函数&#xff1a; setup函数中获取不到this&#xff08;this 在定义的时候是Undefined) reactive()和ref(): 代码&#xff1a; <script setup> // …

解决el-table组件中,分页后数据的勾选、回显问题?

问题描述&#xff1a; 1、记录一个弹窗点击确定按钮后&#xff0c;table列表所有勾选的数据信息2、再次打开弹窗&#xff0c;回显勾选所有保存的数据信息3、遇到的bug&#xff1a;切换分页&#xff0c;其他页面勾选的数据丢失&#xff1b;点击确认只保存当前页的数据&#xff1…

学习MS Dynamics AX 2012编程开发 1. 了解Dynamics AX 2012

在本章中&#xff0c;您将了解开发环境的结构以及Microsoft Dynamics AX中的开发人员可以访问哪些工具。在本书的第一步演练之后&#xff0c;您将很容易理解著名的Hello World代码&#xff0c;您将知道应用程序对象树中的不同节点代表什么。 以下是您将在本章中学习的一些主题…

圆形多线图

const gaugeData [{value: 80,name: Perfect,title: {offsetCenter: [-100%, -100%]},detail: {valueAnimation: true,offsetCenter: [-70%, -100%]},itemStyle: {borderColor: #fff,borderWidth: 6,borderType: solid // 可选&#xff0c;指定边框类型}},{value: 40,name: Go…

MQ-Det: Multi-modal Queried Object Detection in the Wild

首个支持视觉和文本查询的开放集目标检测方法 NeurIPS2023 文章&#xff1a;https://arxiv.org/abs/2305.18980 代码&#xff1a;https://github.com/YifanXu74/MQ-Det 主框图 摘要 这篇文章提出了MQ-Det&#xff0c;一种高效的架构和预训练策略&#xff0c;它利用文本描述的…

JS的箭头函数this:

箭头函数不会创建自己的this&#xff0c;它只会从自己的作用域链的上一层沿用this。 具体看实例&#xff1a; //以前&#xff1a;谁调用的这个函数 this就指向谁// console.log(this);//window// function fn(){// console.log(this);//window 因为这个函数也是window调用…

【Vue+Python】—— 基于Vue与Python的图书管理系统

文章目录 &#x1f356; 前言&#x1f3b6;一、项目描述✨二、项目展示&#x1f3c6;三、撒花 &#x1f356; 前言 【VuePython】—— 基于Vue与Python的图书管理系统 &#x1f3b6;一、项目描述 描述&#xff1a; 本项目为《基于Vue与Python的图书管理系统》&#xff0c;项目…

hive的分区表和分桶表详解

分区表 Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录&#xff0c;每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区&#xff0c;这样的查询效率会提高很多。 静态分区表基本语法 创建分区表 create table dept_p…

Android 移动端编译 cityhash动态库

最近做项目&#xff0c; 硬件端 需要 用 cityhash 编译一个 动态库 提供给移动端使用&#xff0c;l 记录一下 编译过程 city .cpp // // Created by Administrator on 2023/12/12. // // Copyright (c) 2011 Google, Inc. // // Permission is hereby granted, free of charg…

54 代码审计-TP5框架审计写法分析及代码追踪

目录 知识点1知识点2演示案例:demo代码段自写和规则写分析hsycms-TP框架-不安全写法-未过滤weipan21-TP框架-规则写法-内置过滤 知识点1 调试&#xff0c;访问&#xff0c;路由&#xff0c;配置&#xff0c;版本等 知识点2 自写写法&#xff1a;自己写代码&#xff0c;一步步…

以csv为源 flink 创建paimon 临时表相关 join 操作

目录 概述配置关键配置测试启动 kyuubi执行配置中的命令 bug解决bug01bug02 结束 概述 目标&#xff1a;生产中有需要外部源数据做paimon的数据源&#xff0c;生成临时表&#xff0c;以使用与现有正式表做相关统计及 join 操作。 环境&#xff1a;各组件版本如下 kyuubi 1.8…

互联网加竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python 爬虫与协同过滤的新闻推荐系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&…