java中的日志

springboot自带slf4j框架和logback,我们可以移除spring的logging,然后再带入自己的日志框架。

<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>

SLF4J (Simple Logging Facade for Java)

在这里插入图片描述

门面模式
SLF4J通过提供一个简单、高效且灵活的日志抽象层,使得Java应用能够更方便地管理和输出日志,同时降低了日志框架切换和升级的成本和复杂性。

public class MyClass {private static final Logger logger = LoggerFactory.getLogger(MyClass.class);public void someMethod() {// 日志输出示例logger.debug("Debug message");logger.info("Info message");logger.warn("Warning message");logger.error("Error message");}
}

Log4j又分为log4j1和log4j2,直接使用log4j2

在这里插入图片描述

使用slf4j和log4j我们需要引入:

  • log4j-slf4j-impl
  • log4j-core
  • log4j-api

或者直接使用springboot的依赖

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>

配置

在application目录下配置log4j-spring.xml或者log4j.xml文件,从而配置log4j

  • 输出位置:控制台,文件,远程服务器
  • 日志级别
  • 日志格式

日志记录器(Logger)实际上是对日志消息进行管理和分类的组件,它负责决定哪些日志消息应该被记录以及以什么方式记录。记录器会将日志消息传递给一个或多个追加器(Appender),由追加器负责将日志消息输出到实际的目标(如文件、控制台、数据库等)。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"><!-- 配置属性 --><Properties><Property name="log-path">logs/app.log</Property></Properties><!-- 配置追加器 --><Appenders><!-- 控制台追加器 --><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></Console><!-- 文件追加器 --><File name="File" fileName="${log-path}" append="true"><PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/><!-- 文件滚动策略 --><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="10MB" /></Policies><!-- 滚动文件策略 --><DefaultRolloverStrategy max="5"/></File></Appenders><!-- 配置日志记录器 --><Loggers><!-- 根记录器:Root 日志记录器通常用于配置整个应用程序的全局日志记录行为,如果没有为特定的 Logger 配置,日志消息就会被 Root 日志记录器处理。 --><Root level="info"><AppenderRef ref="Console"/><AppenderRef ref="File"/></Root><!-- 自定义记录器 --><Logger name="com.example" level="debug" additivity="false"><AppenderRef ref="Console"/></Logger></Loggers>
</Configuration>
log4j中一个类使用按个记录器:最精确匹配

Log4j2 将优先选择名称最精确匹配的记录器。例如,如果你有一个记录器配置为 com.example,而另一个配置为 com.example.MyClass,那么 MyClass 类的日志消息将使用后者的配置。
例子:
additivity:是否父级传播(自己实现还会传递父级再实现)
level=“debug” 表示该记录器的日志级别是 debug。这意味着只有 debug 级别及更高级别(如 info、warn、error)的日志消息会被记录。

<Loggers><!-- 记录器1: com.example.MyClass --><Logger name="com.example.MyClass" level="debug" additivity="false"><AppenderRef ref="Console"/></Logger><!-- 记录器2: com.example 包 --><Logger name="com.example" level="info" additivity="false"><AppenderRef ref="File"/></Logger><!-- Root 记录器 --><Root level="warn"><AppenderRef ref="Console"/></Root>
</Loggers>

Logback:springboot的默认日志框架

在application目录下配置logback-spring.xml文件或者logback.xml文件,从而配置logback

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

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

相关文章

Docker 安装运行命令解读安装Mysql

MySQL 8.0 镜像 docker pull mysql:8.0运行命令 dockerrun --namemysql-container -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306-d mysql:8.0docker run 创建并运行容器 -p 在后台运行 –name mysql 给当前容器取名叫mysql -p 3306:3306 端口映射&#xff0c;容器与主机的…

【MMSegmentation 环境配置】

MMSegmentation 环境配置 1. 创建python 环境2. 安装pytorch3. 安装MMCV4. 安装 MMSegmentation.5. 测试是否安装成功 1. 创建python 环境 conda create --name openmmlab python3.8 -y conda activate openmmlab2. 安装pytorch On GPU platforms: conda install pytorch tor…

如何混淆 net core 8 架构 C# 编译程序

如何混淆 net core 8 架构 C# 编译程序 一、使用混淆工具 .NET Reactor V6.9二、net core 8 架构 C# 编译程序&#xff08;发布的单文件&#xff09;1、通过发布的单文件程序&#xff0c;可以直接在 .NET Reactor 拖入或打开 &#xff0c;勾选自己需要的保护功能。2、勾选自己需…

Oracle day9

------------------------------------------------------------------------------------ --创建用户 create user test1 identified by 123456; create user ZJun identified by 888888; --授予权限 grant create session to test1; grant create session to ZJun; --删除用…

迈向百亿亿次人工智能数据基础设施

对我来说&#xff0c;在MinIO已经一个多星期了。沉浸在白板会议、架构审查和客户电话中的最大收获是&#xff0c;产品的简单性既是其显着特征&#xff0c;也是其最具决定性的价值驱动因素之一。在规模上尤其如此。由于人工智能的进步&#xff0c;计算能力的爆炸性增长对数据格局…

ArkUI 开发学习随记——登陆界面,正圆头像,主页顶部,列表项案例源码

目录 案例一&#xff1a;登录界面 案例二&#xff1a;正圆头像&#xff0c;胶囊按钮 案例三&#xff1a;主页顶部 案例四&#xff1a;列表项 案例一&#xff1a;登录界面 代码&#xff1a; build() {Column({space:10}){Image($r("app.media.naxida")).width(100)…

什么是N卡和A卡?有什么区别?

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、什么是N卡和A卡&#xff1f;有什么区别&#xff1f;…

福州大学 2022~2023 学年第 1 学期考试 A 卷压轴题参考答案

题目&#xff1a; 定义一个抽象类Structure&#xff08;含有纯虚函数type函数&#xff0c;用以显示当前结构的类型&#xff1b; 含有show函数&#xff09;&#xff0c; 在此基础上派生出Building类, 用来存储一座楼房的层数、房间数以及它的总平方米数。 建立派生 类House&am…

[Django学习]查询过滤器(lookup types)

1.exact exact用于精确匹配字段的值。适用于需要精确查找某个字段值的场景。 Book.objects.filter(title__exactHarry Potter) 上面的查询会查找标题完全为“Harry Potter”的书籍。 2.iexact iexact忽略大小写地精确匹配字段的值。适用于需要忽略大小写进行精确匹配的场…

已解决java.security.acl.AclNotFoundException异常的正确解决方法,亲测有效!!!

已解决java.security.acl.AclNotFoundException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 分析错误日志 检查ACL文件路径和名称 确认系统权限 修改代码逻辑 确保ACL文…

安卓浏览器区分启动、打开、分享

搞了几个钟头&#xff0c;终于全兼容了&#xff0c;分享有2种类型&#xff01; void getDataFromIntent(Intent intent) {if (intent.getAction().equals(Intent.ACTION_VIEW)) {urln intent.getDataString();if (urln ! null) {if (urln.contains("\n"))urln url…

数据分析方法之对比思维

数据分析方法论 对比分析是将两个或两个以上具有可比性的数据进行比较&#xff0c;分析其中的差异&#xff0c;以揭示事物的发展规律。 数据分析之对比思维 归纳方法——穆勒五法&#xff1a;分别是求同法、求异法、共用法、共变法、剩余法。求同法&#xff1a;比相同 2.1求…

利用 Python 和 AI 技术制作智能问答机器人

利用 Python 和 AI 技术制作智能问答机器人 引言 在人工智能的浪潮下&#xff0c;智能问答机器人成为了一种非常实用的技术。它们能够处理大量的查询&#xff0c;提供即时的反馈&#xff0c;并且可以通过机器学习技术不断优化自身的性能。本文将介绍如何使用 Python 来开发一…

现在这个行情,又又又要开始准备面试了~~

亲爱的程序员朋友们: 这些资料曾经帮助过许多有志之士顺利拿下抖音、快手、阿里等大厂的Offer&#xff0c;现在也希望它们能为你的面试旅程助力&#xff01; 关注【程序员世杰】回复【1024】惊喜等你来拿&#xff01; 截图 关注【程序员世杰】回复【1024】惊喜等你来拿&#xf…

python入门基础知识(错误和异常)

本文部分内容来自菜鸟教程Python 基础教程 | 菜鸟教程 (runoob.com) 本人负责概括总结代码实现。 以此达到快速复习目的 目录 语法错误 异常 异常处理 try/except try/except...else try-finally 语句 抛出异常 用户自定义异常 内置异常类型 常见的标准异常类型 语法…

数据结构---二叉树前中后序遍历

1. 某完全二叉树按层次输出&#xff08;同一层从左到右&#xff09;的序列为 ABCDEFGH 。该完全二叉树的前序序列为() A: ABDHECFG B: ABCDEFGH C: HDBEAFCG D: HDEBFGCA 2. 二叉树的先序遍历和中序遍历如下&#xff1a;先序遍历: EFHIGJK; 中序遍历: HFIEJKG. 则二叉…

exe4j使用笔记(jar包转exe工具)

文章目录 配置项1. Welcome2. Project type3. Application info4. Executable info5. Java invocation6. JRE7. Splash screen8. Messages9. Compile executable10. Finished 其他下载地址(官网地址??) 配置项 总共10个配置项。 1. Welcome 略(不用填) 2. Project type …

Unit redis-server.service could not be found.

我的报错如下Unit redis-server.service could not be found. 关键是刷新后台服务 sudo systemctl daemon-reload启动redis-server sudo systemctl start redis-server查看redis-Server服务状态 sudo systemctl status redis-server

MySQL数据库中的索引知识

MySQL数据库中索引的作用是用来加快数据的查询速度。 索引 index&#xff08;表的层面&#xff09; 在数据库中使用select来查询数据的时候会一条一条得去查询符合要求的数据&#xff0c;而索引就相当于在这张表中依据某一个字段的数值给这张表的数据创建了一个目录。目录帮…

江协科技51单片机学习- p11 静态数码管显示

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记&#xff0c;在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用&#xff1a; 51单片机入门教程-2…