Spring Boot 日志配置(Slf4j)

news2024/12/23 0:26:41

SLF4J与Logback简介

Java日志框架众多,常用的有java.util.logging, log4j, logback,commons-logging等。

SLF4J (Simple Logging Facade For Java),它是一个针对于各类Java日志框架的统一Facade抽象。SLF4J定义了统一的日志抽象接口,而真正的日志实现则是在运行时决定。

LogBack是由log4j的创始人开发的新一代日志框架,用于替代log4j。它效率更高、能够适应诸多的运行环境。LogBack的架构设计足够通用,可适用于不同的环境。目前LogBack分为三个模:lobback-core,logback-classic和logback-access。core模块是其它两个模块的基础,classic是core的扩展,是log4j巨大改进的版本。

LogBack-classic本身实现了SL4J的API,因此可以很容易的在logback与其它日志系统之间转换,例如log4j、JDK1.4中的java.util.logging(JUL)。

第三个模块access,它集成了Servlet容器,提供了通过HTTP访问日志的功能,若了解access可访问文档: http://logback.qos.ch/access.html。

LogBack的日志级别有trace、debug、info、warn、error,级别排序为: TRACE < DEBUG < INFO < WARN < ERROR。关于日志级别详细信息,可参考官方文档: http://logback.qos.ch/manual/architecture.html。

默认配置 Logback

默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。

日志输出内容元素具体如下:

  • 时间日期:精确到毫秒

  • 日志级别:ERROR, WARN, INFO, DEBUG or TRACE

  • 进程ID

  • 分隔符:--- 标识实际日志的开始

  • 线程名:方括号括起来(可能会截断控制台输出)

  • Logger名:通常使用源代码的类名

  • 日志内容

Logback默认配置

<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</included>

使用logback.xml配置日志

Spring Boot 提供了一套日志系统,优先选择logback。日志服务一般都在ApplicationContext创建前就初始化了,所以日志配置,可以独立于Spring的配置。我们也可以通过系统属性和传统的Spring Boot外部配置文件,实现日志控制和管理。

根据不同的日志系统,SpringBoot按如下“约定规则”组织配置文件名加载日志配置文件:

日志框架

配置文件

Logback

logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy

Log4j

log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml

Log4j2

log4j2-spring.xml, log4j2.xml

JDK (Java Util Logging)

logging.properties

Spring Boot官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml),命名为logback-spring.xml的日志配置文件,spring boot可以为它添加一些spring boot特有的配置项。

logback-base.xml 配置解析

  1. <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, -->

  2. <!-- appender是configuration的子节点,是负责写日志的组件。 -->

  3. <!-- ConsoleAppender:把日志输出到控制台 -->

  4. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

  5. <encoder>

  6. <pattern>%d %p (%file:%line\)- %m%n</pattern>

  7. <!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->

  8. <charset>UTF-8</charset>

  9. </encoder>

  10. </appender>

  11. <!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->

  12. <!-- 以下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是sys.log -->

  13. <!-- 2.如果日期没有发生变化,但是当前日志的文件大小超过1KB时,对当前日志进行分割 重命名-->

  14. <appender name="syslog"

  15. class="ch.qos.logback.core.rolling.RollingFileAppender">

  16. <File>log/sys.log</File>

  17. <!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->

  18. <!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 -->

  19. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

  20. <!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->

  21. <!-- 文件名:log/sys.2017-12-05.0.log -->

  22. <fileNamePattern>log/sys.%d.%i.log</fileNamePattern>

  23. <!-- 每产生一个日志文件,该日志文件的保存期限为30天 -->

  24. <maxHistory>30</maxHistory>

  25. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

  26. <!-- maxFileSize:这是活动文件的大小,默认值是10MB,本篇设置为1KB,只是为了演示 -->

  27. <maxFileSize>1KB</maxFileSize>

  28. </timeBasedFileNamingAndTriggeringPolicy>

  29. </rollingPolicy>

  30. <encoder>

  31. <!-- pattern节点,用来设置日志的输入格式 -->

  32. <pattern>

  33. %d %p (%file:%line\)- %m%n

  34. </pattern>

  35. <!-- 记录日志的编码 -->

  36. <charset>UTF-8</charset> <!-- 此处设置字符集 -->

  37. </encoder>

  38. </appender>

  39. <!-- 控制台输出日志级别 -->

  40. <root level="info">

  41. <appender-ref ref="STDOUT" />

  42. </root>

  43. <!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->

  44. <!-- com.appley为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->

  45. <!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->

  46. <logger name="com.appleyk" level="DEBUG">

  47. <appender-ref ref="syslog" />

  48. </logger>

logback-spring.xml解析

<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (C) 2018 Baidu, Inc. All Rights Reserved.
-->
<configuration debug="true">

<include resource="logback-base.xml"/>

</configuration>

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

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

相关文章

Linux命令学习之pwd和ls

pwd pwd是查看当前所在目录的命令。 可以看到当前所在目录是/root。在这里需要注意/是根目录&#xff0c;是所有其他目录的父节点&#xff0c;/root目录是root用户的家&#xff08;home&#xff09;目录&#xff0c;这是两个不同的目录。 man pwd可以看一下pwd的帮助&#xf…

Power BI 如何生成动态指标散点图

前言 本文介绍如何在Power BI中创建动态散点图&#xff0c;可以自由切换X轴和Y轴的指标。 数据下载&#xff1a; 使用的是CSDN后台的单篇文章分析数据&#xff0c;在“作品数据”页点击“导出数据”。 因为都是累计值&#xff0c;所以用了两天的数据&#xff0c;手动添加…

[数据挖掘02] pandas的分配和聚合函数

一 说明 窗口函数是什么&#xff1f;窗口函数是时间序列的局部属性处理函数&#xff0c;比如&#xff0c;一维卷积滤波、移动平均、指数平均本篇我们将针对pandas对象的窗口函数展开讨论&#xff0c;并以示例展示他们的概念实质。 二 窗口函数、分组函数&#xff08; GroupBy …

大语言模型速查表;ChatGPT发展路线图;11条市场营销ChatGPT Prompt;使用Midjourney制作专属头像 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 大语言模型速查表 Large Language Model Cheat Sheet ShowMeAI知识星球资源编码&#xff1a;R115 本份速查表的制作目的&#xff0c;是…

Linux4.2LAMP

文章目录 计算机系统5G云计算第一章 LINUX LAMP一、概述二、编译安装Apache httpd服务1.关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下2.安装环境依赖包3.配置软件模块4.编译及安装5.优化配置文件路径&#xff0c;并把httpd服务的可执行程序文件放入路径环境变量…

LInux-文本处理相关命令笔记

目录 文本处理相关命令正则表达式介绍BRE和ERE seqxargs常用选项常用使用方法 uniq介绍常见选项常见使用方法实例 tr常用选项常见使用方法能转换的原因 grep常见选项grep -v 选项 -v和[^..]的区别 常见使用方法使用 总结 cut介绍使用 sort介绍语法参数 使用去重 排序原则按字典…

HarmoneyOS入门--下载与安装DevEco Studio运行helloworld

下载与安装DevEco Studio 在HarmonyOS应用开发学习之前&#xff0c;需要进行一些准备工作&#xff0c;首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 下载DevEco Studio 下载完成后&#xff0c;双击下载的“deveco-studio-xxxx.exe”&#xff0c;进入DevEco S…

chatgpt赋能python:Python创建空变量的方法

Python创建空变量的方法 Python是一种非常受欢迎的编程语言&#xff0c;因为它易于学习和使用&#xff0c;并且具有动态语言的特点。不管你是新手还是有经验的开发人员&#xff0c;你肯定会经常遇到需要创建空变量的情况。在这篇文章中&#xff0c;我们将探讨Python中创建空变…

AI对话交互场景使用WebSocket建立H5客户端和服务端的信息实时双向通信

WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。在WebSocket API中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并进行双向数据传输。 一、为什么需要 WebSock…

设计模式之~工厂系列(简单工厂、工厂方法、抽象工厂)

目录 简单工厂模式 工厂方法模式 简单工厂 VS 工厂方法 抽象工厂模式&#xff1a; 拓展&#xff1a; 利用简单工厂模式优化抽象工厂 利用反射抽象工厂 进行优化 反射配置文件抽象工厂进行优化 简单工厂模式 优点&#xff1a;简单工厂模式的最大优点在于工厂类包含…

Arthas-JVM相关命令使用

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 开头&#xff1a; 我们先说下生产使用频率较高的有哪些&#xff1a;dashboard、heapdump、jvm…

【mqtt】MQTT安装与入门案例

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍MQTT的c版本入门。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习知识&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&…

java高频面试题

集合 前言 时间复杂度 时间复杂度是用来来评估代码的执行耗时的&#xff0c;大O表示法&#xff1a;不具体表示代码的真正执行时间&#xff0c;而是表示代码执行时间随数据规模增长的变化趋势。 当n很大时&#xff0c;低阶、常量、系数并不能影响其增长趋势&#xff0c;因此可以…

压缩感知重构之广义正交匹配追踪法

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…

RFID在工业自动化产线工艺中的应用

RFID在工业自动化产线工艺中的应用 随着工业自动化技术的不断发展&#xff0c;RFID&#xff08;Radio Frequency Identification&#xff09;技术在自动化产线数据采集方面得到了广泛应用。RFID技术是一种通过电磁波进行无线通信和识别的技术&#xff0c;它可以对物品进行追踪…

电子器件系列39:反激式变压器

反激式(Flyback)变压器又称单端反激式或Buck-Boost转换器。因其输出端在原边绕组断开电源时获得能量故而得名。反激式变换器以其电路结构简单&#xff0c;成本低廉而深受广大开发工程师的喜爱。 反激式变压器适合小功率电源以及各种电源适配器。但是反激式变换器的设计难点是变…

Oracle中的数据导出(1)

目录 1、基本语法&#xff1a; 2、操作步骤 3、spool作用 SPOOL命令的使用 在 Oracle 中&#xff0c;SPOOL 是一条 SQLPLUS 命令&#xff0c;用于将执行 SQL 脚本的输出结果保存到指定文件中。SPOOL 命令可以帮助用户快速导出查询结果、生成报表等常见任务。 1、基本语法&…

压缩感知重构算法之正交匹配追踪算法(OMP)

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…

java-面向对象

java-面向对象 面向对象 首先考虑事物中存在哪些对象&#xff0c;再建立对象与对象的关系 一、面向对象-&#xff08;类和对象&#xff09; 1.1类和对象的理解 客观存在的事物皆为对象 &#xff0c;所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性…

java-字符流和字节流(一)

java-字符流和字节流(一) 一、File类 1.1 File类概述和构造方法 File类介绍 它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言&#xff0c;其封装的并不是一个真正存在的文件&#xff0c;仅仅是一个路径名而已。它可以是存在的&#xff0c;也…