当前位置: 首页 > news >正文

org.slf4j日志组件实现日志功能

slf4j 全称是Simple Logging Facade for Java。facade是一种设计模式。
slf4j 是一个抽象程度更高的日志组件,本身并不提供实际的日志功能。实际的日志功能是通过log4j等日志组件实现,而使用者只需要关心 slf4j 给出的API。
slf4j 仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,
所以单独的slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如log4j或者log4j2

slf4j-api提供了slf4j的抽象接口,我们作为使用者,只需要关心它提供的API就行。
slf4j-log4j12是slf4j与log4j的桥接组件。
log4j是我们常见的log4j日志组件。

Maven相关配置,会自动安装依赖 log4j-1.2.17

<!-- 日志相关 https://mvnrepository.com/artifact/org.slf4j/slf4j-api --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version></dependency>

需要补充配置文件:执行代码对应resources目录下

配置文件详细说明:

## 1 Level(Singe) file/Console (自动默认Level.DEBUG) =off,fatal,error、warn、info、debug
log4j.rootLogger=debug, stdout, fileLayout:日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)# 2.1 输出到console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式-->2023-12-17 15:19:11 ,311
# %p   输出优先级,即 DEBUG,INFO,WARN,ERROR,FATAL-->DEBUG
# %c   输出所属的类目,通常就是所在类的全名-->com.cacho.s2b.lesson.learn.LearnLog
# %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数-->com.cacho.s2b.lesson.learn.LearnLog.main(LearnLog.java:12)
# %L   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数-->12=代码行数
# %m   输出代码中指定的消息-->真实打印的信息
# %r   输出自应用启动到输出该log信息耗费的毫秒数
# %n   输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss ,SSS} %p %c:%l --> %m%n# 2.2 输出到文件:
# 2.2.1 FileAppender(文件);
# 2.2.2 RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件);# 2.2.2.1 MaxBackupIndex=10-->指定可以产生的滚动文件的最大数10# 2.2.2.2 MaxFileSize=1M-->日志文件到达该大小时,将会自动生成新文件test1.log.1
# 2.2.3 DailyRollingFileAppender(每天产生一个日志文件);# 2.2.3.1 DatePattern='.'yyyy-MM-dd(默认每天一个文件);'.'yyyy-MM-dd-HH-mm(每分钟)
# 2.2.4 WriterAppender(将日志信息以流格式发送到任意指定的地方)
# 2.2.5 Append=false(默认值是true=将消息增加到指定文件中;false=将消息覆盖指定的文件内容)
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.Encoding=UTF-8
log4j.appender.file.File=logs/test.log
log4j.appender.file.MaxFileSize=1kb
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file. =org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c:%L --> %m%n

测试代码:

package com.cacho.s2b.lesson.learn;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/** @Description: slf4j-api=1.7.30 + slf4j-log4j12=1.7.25 + log4j=1.2.17* @Author LingWei* @date 2023/12/14**/
public class LearnLog {public static void main( String[] args ){String error = "error日志信息";String warn = "error日志信息";Logger logger = LoggerFactory.getLogger(LearnLog.class);logger.debug("slf4j项目使用了日志系统,这里是项目debug日志信息");logger.info("slf4j项目使用了日志系统,这里是项目info日志信息");logger.warn("slf4j项目使用了日志系统,这里是项目{}",warn);logger.error("slf4j项目使用了日志系统,这里是项目{}{}",error,":可以多个参数"); //{}替换成对应的变量值}
}

最终打印结果:

相关文章:

org.slf4j日志组件实现日志功能

slf4j 全称是Simple Logging Facade for Java。facade是一种设计模式。 slf4j 是一个抽象程度更高的日志组件&#xff0c;本身并不提供实际的日志功能。实际的日志功能是通过log4j等日志组件实现&#xff0c;而使用者只需要关心 slf4j 给出的API。 slf4j 仅仅是一个为Java程序提…...

3D小球跑酷

目录 一、前言 二、开发环境 三、场景搭建 1. 创建项目 2. 创建场景内物体 2.1 创建跑道 2.2 创建玩家 2.3 创建障碍物 2.4 改变跑道和障碍物的颜色 2.4.1 创建材质 2.4.2 给跑道和障碍物更换材质 四、功能脚本实现 1. 创建玩家脚本 2. 相机跟随 3. 胜负的判定 3.1 …...

PyQt6 QInputDialog输入对话框控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计50条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…...

ASP.NET Core MVC依赖注入理解(极简个人版)

依赖注入 文献来源&#xff1a;《Pro ASP.NET Core MVC》 Adam Freeman 第18章 依赖注入 1 依赖注入原理 所有可能变化的地方都用接口在使用接口的地方用什么实体类通过在ConfigureService中注册解决注册的实体类需要指定在何种生命周期中有效 TransientScopedSingleton 2…...

基于SpringBoot+Vue实现的企业级微服务多租户多系统架构

...

美光将于 2025 年推出 1γ DRAM,并在日本生产HBM

美国内存巨头美光正准备从 2025 年开始在其位于日本广岛的晶圆厂生产最先进的“1γ”DRAM。同时&#xff0c;公司计划在同一晶圆厂生产高带宽存储器&#xff08;HBM&#xff09;&#xff0c;以满足对生成式人工智能应用日益增长的需求。 据《日经亚洲》12月13日报道&#xff0…...

【Docker】以service形式离线安装卸载的docker、compose服务

CentOS7离线卸载Docker步骤 移除开机自启 [rootCenOS-1 system]# systemctl disable docker移除注册文件 rm -rf /etc/systemd/system/docker.service删除相关安装目录 rm -rf $(find / -name docker)CentOS7离线安装Docker、Compose步骤 资源地址&#xff1a;docker_20.10…...

Dubbo RPC-Redis协议

Redis协议 特性说明 Redis 是一个高效的 KV 存储服务器。基于 Redis 实现的 RPC 协议。 2.3.0 以上版本支持。 使用场景 缓存&#xff0c;限流&#xff0c;分布式锁等 使用方式 引入依赖 从 Dubbo 3 开始&#xff0c;Redis 协议已经不再内嵌在 Dubbo 中&#xff0c;需要单…...

展开说说:Android之常用的延时执行策略

总结了以下六种常用的Android延时执行策略&#xff0c;以此记录&#xff1a; 1、TimerTask 2、Handler.postDelayed 3、Handler.sendEnptyMessageDelayeed 4、Thread.sleep线程休眠-需要在子线程 5、使用AlarmManager-全局定时器或者闹钟 6、Wait 首先定义一个时间常量&…...

Jenkins在window下配置Android打包配置

在Windows下配置Jenkins进行Android打包的步骤如下&#xff1a; 安装Jenkins&#xff1a;从Jenkins官网下载适用于Windows的安装包&#xff0c;并按照安装向导的指示完成安装。 启动Jenkins服务&#xff1a;启动Jenkins服务&#xff0c;确保服务正常运行。 配置Jenkins&#…...

云原生系列2-GitLab和Jenkins

1、GitLab类似github&#xff0c;是个私有仓库 1、GitLab安装&#xff0c;至少8G内存4核cpu # 查找Gitlab镜像 docker search gitlab/gitlab-ce # gitlab镜像拉取 docker pull gitlab/gitlab-ce # 查看镜像 docker images # 本机先建3个目录&#xff0c;为了gitlab容器通过挂…...

xcode无线真机调试详细图文步骤

步骤一、 步骤二&#xff1a; 步骤三&#xff1a; 配置完到这里&#xff0c;点击真机右键&#xff0c;菜单栏并未出现connect via ip address 选项&#xff0c;也没出现无线连接的小地球图标&#xff0c;别慌&#xff0c;接着进行下一步操作即可。 步骤四&#xff1a; 1.打开…...

EasyExcel合并相同内容单元格及动态标题功能的实现

一、最初版本 导出的结果&#xff1a; 对应实体类代码&#xff1a; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentLoopMerge; import com.al…...

【论文解读】Comparing VVC, HEVC and AV1 using Objective and Subjective Assessments

时间&#xff1a;2020 级别&#xff1a;IEEE 机构&#xff1a; IEEE 组织 摘要&#xff1a; 对3种最新的视频编码标准HEVC (High Efficiency video Coding)测试模型HM (High Efficiency video Coding)、amedia video 1 (AV1)和Versatile video Coding测试模型 (VTM)进行了客观和…...

动态窗口法Dynamic Window Approach在动态环境中避障

以这个博主的代码为基础&#xff0c;加了一个碰撞检测&#xff0c;但是这个碰撞检测目前还不完善&#xff0c;思路应该是这个思路&#xff0c;以后有时间再完善吧。 动态窗口法&#xff1a;【路径规划】局部路径规划算法——DWA算法&#xff08;动态窗口法&#xff09;|&#…...

2023.12.15 FineBI与kettle

1.结构化就是可以用schema描述的数据,就是结构化数据,能转为二维表格, 如CSV,Excel, 2.半结构化就是部分可以转换为二维表格,如JSON,XML 3.非结构化数据,就是完全无法用二维表格表示的数据,如Word文档,Mp4,图片,等文件. kettle的流程 新建转换-构建流图-配置组件-保存运行 使…...

Python tkinter 初探Toplevel控件搭建父子窗口

目录 Toplevel控件搭建父子窗口 最简明的父子窗口框架 改进一&#xff1a;屏蔽和开放按钮 改进二&#xff1a;子窗口始终在主窗口之上 改进三&#xff1a;增加子窗口的关闭协议 改进四&#xff1a;使子窗口长获焦点 总结 Toplevel控件搭建父子窗口 最近&#xff0c;用P…...

SpringCloud源码探析(十二)-基于SpringBoot开发自定义中间件

1.概述 中间件是一种介于操作系统和应用软件之间&#xff0c;为应用软件提供服务功能的软件&#xff0c;按功能划分有消息中间件&#xff08;Kafka、RocketMQ&#xff09;、通信中间件&#xff08;RPC通信中间件&#xff0c;dubbo等&#xff09;&#xff0c;应用服务器等。中间…...

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(一)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xff08;一&#xff09; 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…...

python实现贪吃蛇游戏

文章目录 1、项目说明2、项目预览3、开发必备4、贪吃蛇代码实现4.1、窗口和基本参数实现4.2、绘制背景4.3、绘制墙壁4.4、绘制贪吃蛇4.5、绘制食物4.6、实现长度信息显示4.7、定义游戏暂停界面4.8、定义贪吃蛇死亡界面4.9、实现贪吃蛇碰撞效果4.10、实现添加食物功能4.11、实现…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 &#xff08;1&#xff09;使用Uniapp 3.8版本支持ArkTS编译 &#xff08;2&#xff09;通过uni-harmony插件调用原生能力 &#xff08;3&#xff09;分层架构设计&#xff1a; graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...

__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.

这个警告表明您在使用Vue的esm-bundler构建版本时&#xff0c;未明确定义编译时特性标志。以下是详细解释和解决方案&#xff1a; ‌问题原因‌&#xff1a; 该标志是Vue 3.4引入的编译时特性标志&#xff0c;用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…...

Python异步编程:深入理解协程的原理与实践指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 持续学习&#xff0c;不断…...

标注工具核心架构分析——主窗口的图像显示

&#x1f3d7;️ 标注工具核心架构分析 &#x1f4cb; 系统概述 主要有两个核心类&#xff0c;采用经典的 Scene-View 架构模式&#xff1a; &#x1f3af; 核心类结构 1. AnnotationScene (QGraphicsScene子类) 主要负责标注场景的管理和交互 &#x1f527; 关键函数&…...