Springboot使用log4j2日志框架

文章目录

    • 1.pom.xml引入依赖
    • 2.配置文件引入log4j2的配置文件
    • 3.导入log4j2配置文件
    • 4.通过@Slf4j注解来使用log.info()等
    • 最后

1.pom.xml引入依赖

提示:lombok用于@Slf4j注解

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><!--过滤系统自带日志--><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

2.配置文件引入log4j2的配置文件

提示:在配置文件yaml中引入

logging:config: classpath:log4j2-spring.xml

3.导入log4j2配置文件

提示:文件名为log4j2-spring.xml,放置在/src/main/resources文件夹下与yaml配置文件同路径,可直接使用下面的配置文件信息,或根据自己需求修改。

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出 -->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数 -->
<configuration status="INFO" monitorInterval="30"><!--<contextName>log4j2</contextName> --><properties><!--${sys:catalina.home}表示linux中环境变量中的tomcat根目录 用户主目录 --><!--原来用logback时候在统一配置中心也配置一个logging.path=/opt/tomcat-log/${spring.application.name} LOG_PATH是内置变量 --><!--${sys:user.home} 用户主目录 --><Property name="log_path">logs</Property><!-- 保留日志天数 D H M S 分别对应天 小时 分钟 秒 --><property name="KEEP_LOG_DAY">60D</property><!-- 日志切割的最小单位 --><property name="EVERY_FILE_SIZE">5M</property></properties><!--先定义所有的appender --><appenders><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式 --><PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /><ThresholdFilter level="info" onMatch="ACCEPT"onMismatch="DENY" /></console><!--这个输出控制台的配置 --><!--<console name="Console" target="SYSTEM_OUT" follow="false"> --><!--&lt;!&ndash;输出日志的格式 &ndash;&gt; --><!--<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" /> --><!--</console> --><!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --><RollingFile name="RollingFileInfo"fileName="${log_path}/info.log"filePattern="${log_path}/$${date:yyyy-MM-dd}/info-%d{yyyy-MM-dd}-%i.log"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="info" onMatch="ACCEPT"onMismatch="DENY" /><!--<Filters> --><!--<ThresholdFilter level="INFO"/> --><!--<ThresholdFilter level="WARN" onMatch="DENY" --><!--onMismatch="NEUTRAL"/> --><!--</Filters> --><PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /><Policies><!-- 归档每天的文件 --><!--<TimeBasedTriggeringPolicy interval="1" modulate="true"/> --><TimeBasedTriggeringPolicy /><!-- 限制单个文件大小 --><SizeBasedTriggeringPolicysize="${EVERY_FILE_SIZE}" /></Policies><!-- 限制每天文件个数 --> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了100 --><DefaultRolloverStrategy max="256"><Delete basePath="${log_path}/" maxDepth="3"><IfFileName glob="*/*info*.log" /><IfLastModified age="${KEEP_LOG_DAY}" /></Delete></DefaultRolloverStrategy></RollingFile><RollingFile name="RollingFileWarn"fileName="${log_path}/warn.log"filePattern="${log_path}/$${date:yyyy-MM-dd}/warn-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="warn" onMatch="ACCEPT"onMismatch="DENY" /><!--<PatternLayout charset="GBK" pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /> --><PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicysize="${EVERY_FILE_SIZE}" /></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了100 --><DefaultRolloverStrategy max="256"><Delete basePath="${log_path}/" maxDepth="3"><IfFileName glob="*/*warn*.log" /><IfLastModified age="${KEEP_LOG_DAY}" /></Delete></DefaultRolloverStrategy></RollingFile><RollingFile name="RollingFileError"fileName="${log_path}/error.log"filePattern="${log_path}/$${date:yyyy-MM-dd}/error-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="error" onMatch="ACCEPT"onMismatch="DENY" /><!--<PatternLayout charset="GBK" pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /> --><PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicysize="1${EVERY_FILE_SIZE}" /></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了100 --><DefaultRolloverStrategy max="256"><Delete basePath="${log_path}/" maxDepth="3"><IfFileName glob="*/*error*.log" /><IfLastModified age="180D" /></Delete></DefaultRolloverStrategy></RollingFile></appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 --><loggers><!--过滤掉spring和mybatis的一些无用的DEBUG信息 --><logger name="org.springframework" level="INFO"></logger><logger name="org.mybatis" level="DEBUG"></logger><!--<root level="all"> --><root level="ALL"><appender-ref ref="Console" /><appender-ref ref="RollingFileInfo" /><appender-ref ref="RollingFileWarn" /><appender-ref ref="RollingFileError" /></root><logger name="cn.timebusker.util" level="INFO"><appender-ref ref="RollingFileInfo" /></logger></loggers>
</configuration>

4.通过@Slf4j注解来使用log.info()等

提示:添加@Slf4j注解,然后在下面直接使用log.info()等方法

package com.example.demo.controller;import com.example.demo.entity.User;
import com.example.demo.service.LoginServcie;
import com.example.demo.utils.ResponseResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.slf4j.Slf4j;@RestController
@Slf4j
public class LoginController {@PostMapping("/user/login")public ResponseResult login(@RequestBody User user) {log.info("111-登录成功!");return null;}
}

控制台打印结果
在这里插入图片描述
info.log文件中打印的结果
在这里插入图片描述

最后

到此为止,欢迎大家交流!

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

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

相关文章

有了向量数据库,我们还需 SQL 数据库吗?

“除了向量数据库外&#xff0c;我是否还需要一个普通的 SQL 数据库&#xff1f;” 这是我们经常被问到的一个问题。如果除了向量数据以外&#xff0c;用户还有其他标量数据信息&#xff0c;那么其业务可能需要在进行语义相似性搜索前先根据某种条件过滤数据&#xff0c;例如&a…

《数据库开发实践》之触发器

一、什么是触发器&#xff1f; 1.概念&#xff1a; 简单来说触发器就是一种特殊的存储过程&#xff0c;在数据库服务器触发事件的时候会自动执行其SQL语句集。 2.构成四要素&#xff1a; &#xff08;1&#xff09;名称&#xff1a;要符合标识符命名规则 &#xff08;2&am…

Ubuntu及Docker 安装rabbitmq

安装ubuntu 前 先暴露端口&#xff1a; 5672 用于与mq服务器通信用 15672 管理界面使用的端口 docker命令&#xff1a;docker run -itd --name ubuntu -p 5672:5672 -p 15672:15672 ubuntu 进入docker : docker exec -it ubuntu /bin/bash 步骤&#xff1a; 1. 更新安装源…

Python入门知识点分享——(十一)if条件语句

if条件语句是一种编程语言中用于控制程序流程的结构。它根据一个条件的真假来决定执行不同的代码块。 if条件语句通常由if关键字、一个条件表达式和一个代码块组成。条件表达式可以是一个返回布尔值的表达式&#xff0c;如果条件为真&#xff0c;则执行代码块中的代码&#xf…

【C++进阶03】二叉搜索树

一、二叉搜索树的概念和性质 中序遍历二叉搜索树会得到一个有序序列 所以二叉搜索树又称二叉排序树 它可以是一棵空树 也可以是具有以下性质的二叉树&#xff1a; 若它的左子树不为空 则左子树上所有节点的值都小于根节点的值若它的右子树不为空 则右子树上所有节点的值都大于…

mysql卸载与两种安装方式,非常详细

mysql卸载与两种安装 mysql卸载、mysql的MSI安装mysql的ZIP安装 在MySQL的官网中有两种下载类型一种是MSI二进制的文件&#xff0c;起始就是MySQL的图形化安装步骤&#xff0c;还有一种就是ZIP压缩包格式。下载卸载和MSI安装在前面的文章中已经介绍过&#xff0c;每个步骤都有截…

HarmonyOS自学-Day3(做个登录功能小案例)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;登录功能小案例 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程语言基础&#xff0c;非编程小白&#xff09;的 HarmonyOS自学笔记&#xff0c;此类文章笔记我会默认大家都学过前端相关的知识知识来源为 HarmonyOS官方文…

创建加密分区或者文件

文章目录 [GParted 中已清除的分区与未格式化的分区](https://superuser.com/questions/706624/cleared-vs-unformatted-partition-in-gparted)创建加密分区解密创建的加密分区以便挂载格式化设备未具体的格式&#xff08;这里为ext4格式&#xff09;创建挂载点目录挂载加密的文…

java freemarker 动态生成excel文件

好久木有更新啦 抓住2023的小尾巴 浅浅更新一下吧~ 最近做了一个动态生成excel的功能&#xff0c;这里记录下部分功能&#xff0c;主要用到的是freemarker框架&#xff0c;spring就有带&#xff0c;我起的demo载入了一下freemarker的jar包 一、创建模板 首先可以创建一个e…

三维可视化智慧工地源码,数字孪生可视化大屏,微服务架构+Java+Spring Cloud +UniApp +MySql

源码技术说明 微服务架构JavaSpring Cloud UniApp MySql&#xff1b;支持多端展示&#xff08;PC端、手机端、平板端&#xff09;;数字孪生可视化大屏&#xff0c;一张图掌握项目整体情况;使用轻量化模型&#xff0c;部署三维可视化管理&#xff0c;与一线生产过程相融合&#…

Leetcode 763 划分字母区间

题意理解&#xff1a; 要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 输入&#xff…

Seata 中封装了四种分布式事务模式,分别是: AT 模式, TCC 模式, Saga 模式, XA 模式,

文章目录 seata概述Seata 中封装了四种分布式事务模式&#xff0c;分别是&#xff1a;AT 模式&#xff0c;TCC 模式&#xff0c;Saga 模式&#xff0c;XA 模式&#xff0c; 今天我们来聊聊seata seata 概述 在微服务架构下&#xff0c;由于数据库和应用服务的拆分&#xff0c…

echarts 柱状图

记录echarts 柱状图基础案例以及相关配置。 1.基础柱状图 const myChart this.$echarts.init(this.$refs.echartsZx);const option {title: {text: 本周考试记录},//提示框tooltip: {trigger: axis,axisPointer: {type: shadow}},xAxis: {type: category,data: [Mon, Tue, W…

spring、springmvc、springboot、springcloud简介

spring简介 spring是什么&#xff1f; spring: 春天spring: 轻量级的控制反转和面向切面编程的框架 历史 2002年&#xff0c;首次推出spring雏形&#xff0c;interface 21框架2004年&#xff0c;发布1.0版本Rod Johnson: 创始人&#xff0c;悉尼大学&#xff0c;音乐学博士…

配置vite项目打包控制台不显示console.log配置

可以看vite官方的配置文档&#xff1a;构建选项 | Vite 官方中文文档 主要是配置&#xff1a;但是terser需要vite3.0以后手动安装一下 build: {sourcemap: false,minify: terser,terserOptions: {compress: {drop_console: true,drop_debugger: true,},},}, 安装命令&#xff…

八种常见顺序存储的算法

目录 1、线性枚举 1&#xff09;问题描述 2&#xff09;动图演示 3&#xff09;示例说明 4&#xff09;算法描述 5&#xff09;源码详解 2、前缀和差分 1&#xff09;问题描述 2&#xff09;动图演示 3&#xff09;样例分析 4&#xff09;算法描述 5&#xff09;源码…

攻防世界—no-strings-attached

# 攻防世界—no-strings-attached 介绍下——IDA内置脚本 shiftF12 收获——要一个一个大致看出代码在干嘛 先运行一遍 int __cdecl main(int argc, const char **argv, const char **envp) { setlocale(6, &locale); banner(); prompt_authentication(); authenti…

3D展2D数学原理

今年早些时候&#xff0c;我为 MAKE 杂志写了一篇教程&#xff0c;介绍如何制作视频游戏角色的毛绒动物。 该技术采用给定的角色 3D 模型及其纹理&#xff0c;并以编程方式生成缝纫图案。 虽然我已经编写了一般摘要并将源代码上传到 GitHub&#xff0c;但我在这里编写了对使这一…

vue多条数据渲染(带图片)

我在这用的为接口数据&#xff1a; 先调用接口获取需要的数据: 然后用&#xff1a;data绑定需要渲染的数据&#xff1b;&#xff08;记得包裹在<el-table>标签中&#xff09; 然后以此循环渲染数据&#xff1b;那怎么渲染出来图片呢&#xff1f; 在<el-table-column…

技术资讯:2023编程语言排行榜,出炉啦!

大家好&#xff0c;我是大澈&#xff01; 本文约2000字&#xff0c;整篇阅读大约需要4分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"一份&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01…