【Java】【SpringBoot】logback开发环境配置

news/2025/1/23 11:54:09/文章来源:https://www.cnblogs.com/luyj00436/p/18510376

image

LogBack开发环境配置

Logback是一个开源的日志记录库,它是log4j的一个改进版本 。Logback被设计为易于使用,同时提供强大的日志管理功能。

1.添加依赖

在pom.xml文件中添加依赖:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.1</version>
</dependency>

2.创建Logback配置文件

在你的资源目录(通常是src/main/resources)中创建一个名为logback.xml的文件。这个文件将包含你的日志配置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="STDOUT" /></root>
</configuration>

3.使用logback记录日志

在你的Java代码中,你可以通过导入logback的Logger类来记录日志。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;@SpringBootTest
public class LogbackTest {private static final Logger log = LoggerFactory.getLogger(LogbackTest.class);/*** 测试log4J的使用* @author lyj* @date 2024-10-28*/@Testpublic void test(){log.error("hello, Logback!");}
}

4.运行你的应用程序

image

logback高级特性

1. 配置多个Appender

你可以配置多个Appender,以便将日志输出到不同的目的地,比如控制台、文件、远程服务器等。 这里配置的文件路径为,当前项目的logs文件夹下。

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 日志存放路径 --><property name="log_path" value="./logs" /><!--  输出到控制台--><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!--输出到文件--><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log_path}/logFile.log</file><encoder><pattern>${log_path}/%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log_path}/logFile.%d{yyyy-MM-dd}.log</fileNamePattern></rollingPolicy></appender><root level="info"><appender-ref ref="STDOUT" /><appender-ref ref="FILE" /></root>
</configuration>

打开logs日志。可以看到输出已经写logFile.log文件下:

image

2. 日志级别的控制

Logback支持TRACE, DEBUG, INFO, WARN, ERROR和FATAL等日志级别。你可以在配置文件中为不同的Logger设置不同的日志级别,以便控制日志的详细程度。

<root level="info"><appender-ref ref="STDOUT" /></root><root level="DEBUG"><appender-ref ref="FILE"></appender-ref></root>

3. 异步日志记录

对于需要高性能日志记录的应用程序,Logback提供了异步Appender。使用异步Appender可以减少日志记录对应用程序性能的影响。

 <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><queueSize>512</queueSize><discardingThreshold>0</discardingThreshold><appender-ref ref="STDOUT" />
</appender><root level="info"><appender-ref ref="file_info" /><appender-ref ref="file_error" />
</root>

在这个例子中,所有的日志都会先被发送到异步Appender的队列中,然后由一个单独的线程从队列中取出并处理(即发送到控制台)。

4. 日志格式的自定义

Logback允许你自定义日志消息的格式,以满足特定的格式化需求。你可以通过修改encoder部分的pattern属性来实现这一点。例如,如果你希望在日志中包含线程名称和类名,你可以这样配置:

<encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>

5. 日志文件的压缩和清理

随着时间的推移,日志文件会不断增长,可能会占用大量的磁盘空间。Logback的TimeBasedRollingPolicy已经提供了一种按日期分割日志文件的机制,但你还可以进一步配置日志文件的压缩和清理策略。

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>30</maxHistory> <!-- 保留最近30天的日志文件 --><totalSizeCap>3GB</totalSizeCap> <!-- 最多保留3GB的日志数据 -->
</rollingPolicy>

在这个配置中,maxHistory属性指定了保留日志文件的最大天数,而totalSizeCap属性则限制了日志文件的总大小。一旦达到这些限制,旧的日志文件将被自动删除或压缩,从而帮助你管理磁盘空间。

6. 日志的归档

有时候,你可能希望将日志文件归档到一个单独的目录中,以便于备份和管理。你可以通过配置rollingPolicy来实现这一点:

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>/var/log/myapp/archive/logFile.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>30</maxHistory>
</rollingPolicy>

在这个例子中,日志文件将被归档到/var/log/myapp/archive/目录下。你可以根据实际需要调整归档路径。
通过这些高级配置,你可以进一步优化Logback的使用,以满足复杂和特定的日志记录需求。灵活地运用这些技巧,可以帮助你更好地管理和分析应用程序的日志数据。

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

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

相关文章

【NSSCTF】nssctf2024秋季招新赛赛

【NSSCTF】2024年NSSCTF秋季招新赛 Reverse 签到? key加密密文: 主加密程序解密脚本: a = [32,39,38,37,44,45,15,34,20,30,33,24,9,223,200,28,231,5,229,226,238,26,230,4,217,201,227,10,245,241,248,243,250,234,255,231,245,185,228,] b = [104, 117, 117, 101, 114, 9…

2、添加路由

1、在项目根目录安装 vue-router:npm i vue-router@next【@next 代表的是安装最新的版本】 2、在 src 目录下新建 router/index.js,并添加路由配置项// router/index.js import { createRouter, createWebHashHistory } from vue-router import Index from @/views/Index.vue…

[MRCTF2020]Xor

[MRCTF2020]Xor 检查无壳,32位 分析 打开main函数,发现不能F5反汇编如下报错,在分析401095位置处的指令出错 .text:00401095 call sub_401020 此处是一个call指令,我们点进 sub_401020函数f5反汇编成功打开 然后返回到main函数按F5成功反汇编 是个简单的…

解决application.yml没有小绿叶图标

1、application.ym文件没有显示

数字万用表

数字万用表使用教程 l 目录 l 胜利VC8901A型数字式万用表外部结构 l 数字万用表的使用方法 l 数字万用表高效使用技巧 l 数字万用表test档使用方法 l 数字万用表测量频率方法 l 数字万用表上的HFE档使用方法 一、 胜利VC8901A型数字式万用表外部结构一)数字万用表选择开关 万用…

Java为什么不使用多继承?

Java不使用多继承是为了:一、避免菱形继承问题;二、简化代码和维护;三、引入接口实现多继承功能;四、遵循设计原则。避免菱形继承问题可以使代码更加稳健可靠,降低了开发复杂度,从而便于团队协作和维护。一、避免菱形继承问题 多继承意味着一个类可以从多个父类继承属性和…

紫微斗数算法的实现流程

斗数排盘核心算法题外话 我想了又想大凡能够修炼成绝世高手的都是“魔鬼”。只有魔鬼才会纯粹的“敢贪,敢嗔,敢痴”。 你我都困在了敢字。程序猿拿起拿锋利的刀,解构世间的一切吧!最近看西游有感而发。 “联系是普遍存在的,规律是客观存在的”,那能不能用程序来解构命运的…

1、前端项目创建(vue3 + vite + element-plus)

vue3+vite+element-plus 项目创建: 1、npm create vite@latest data-relationship -- --template vue 2、npm install 安装依赖 3、npm i element-plus 安装element-plus 4、修改 main.jsimport { createApp } from vue import App from ./App.vue import ElementPlus from…

智谱 AI 大模型

简介智谱是清华大学技术成果转化公司 中英双语千亿级大模型 GLM-130B 对话模型 ChatGLM 开源模型 ChatGLM-6B AI 提效助手智谱清言 高效率代码模型 CodeGeeX 多模态理解模型 CogVLM 文生图模型 CogView 文生视频模型 CogVideo文生视频大模型开放平台大模型体验中心 编程调用# p…

Containers和Serverless本质区别是什么

Containers和Serverless的本质区别主要在以下几个方面:一、资源管理方式;二、执行环境;三、部署和运维方式;四、冷启动和实时性;五、适用场景;六、资源消耗;七、成本;八、扩展性。资源管理方式是指,Containers通过资源限制和隔离技术,实现对资源的有效管理,Serverle…

WPF开发03-Prism学习笔记

@目录1.Prism的一些特点2.使用步骤3.什么是Region4.BindableBase5.模块Module1.简介2. 创建模块Module3.视图注入:6.MVVM7.DelegateCommand命令、CompositeCommand复合命令8.事件聚合器IEventAggregator1.普通的发布和订阅事件2.事件过滤器9.导航Navigation10.对话服务Dialog1…