Slf4j+Log4j简单使用

news/2024/5/17 23:59:54

Slf4j+Log4j简单使用

文章目录

  • Slf4j+Log4j简单使用
    • 一、引入依赖
    • 二、配置 log4j2.xml
      • 2.1 配置结构
      • 2.2 配置文件
    • 三、使用
    • 四、使用MDC完成日志ID
      • 4.1 程序入口处
      • 4.2 配置文件配置打印
      • 4.3 多线程日志ID传递配置
    • 五. 官网

一、引入依赖

<dependencies><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.23.1</version></dependency>
</dependencies>

二、配置 log4j2.xml

2.1 配置结构

在这里插入图片描述

2.2 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config" status="TRACE" monitorInterval="30"><Properties><Property name="PROJECT_NAME">log4j2-example</Property><Property name="LOG_PATH">./data/logs</Property><Property name="pattern">[%d{yyyy-MM-dd HH:mm:ss,SSS}] [%c{1.}::%M] [%t] [%p]: %m%n</Property></Properties><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="${pattern}"/></Console><RollingFile name="RollingFile" fileName="${LOG_PATH}/${PROJECT_NAME}.log"filePattern="${LOG_PATH}/${date:yyyy-MM-dd}/${PROJECT_NAME}-%d{yyyy-MM-dd}-%i.log"><PatternLayout pattern="${pattern}"/><Policies><TimeBasedTriggeringPolicy interval="1" modulate="true"/><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile></Appenders><Loggers><Root level="info"><appender-ref ref="Console"/><appender-ref ref="RollingFile"/></Root></Loggers>
</Configuration>

三、使用

package com.chenjiacheng.log.log4j2.log;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** Created by chenjiacheng on 2024/4/11 22:59** @author chenjiacheng* @since 1.0.0*/
public class Log4j2Example {private static final Logger log = LoggerFactory.getLogger(Log4j2Example.class);public static void main(String[] args) {log.trace("hello,world");log.debug("hello,world");log.info("hello,world");log.warn("hello,world");log.error("hello,world");}
}

四、使用MDC完成日志ID

4.1 程序入口处

MDC.put("logId", UUID.randomUUID().toString());

4.2 配置文件配置打印

<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss,SSS}] [%c{1.}::%M] [%t] [%p] [%X{logId}]: %m%n"/>

%x{key}: 用于打印MDC内指定Key的值。

4.3 多线程日志ID传递配置

添加配置: resources/log4j2.component.properties

isThreadContextMapInheritable=true

五. 官网

Slf4j: Slf4j
Log4j2: Log4j2


http://www.mrgr.cn/p/18166406

相关文章

MBR30100PT-ASEMI肖特基二极管MBR30100PT

MBR30100PT-ASEMI肖特基二极管MBR30100PT编辑:ll MBR30100PT-ASEMI肖特基二极管MBR30100PT 型号:MBR30100PT 品牌:ASEMI 封装:TO-247 最大平均正向电流(IF):30A 最大循环峰值反向电压(VRRM):100V 最大正向电压(VF):0.54V~0.92V 工作温度:-40C~170C 反向恢复时间:…

脑图系列-操作系统

打开电源操作系统做了什么? 加载BIOS 当计算机插上电源时,计算机主板的BIOS开始工作。BIOS会进行POST(Power-On Self-Test)自检,检测计算机的硬件是否正常,包括处理器、内存、硬盘、显卡、网卡等设备。如果有问题,则会在屏幕上显示错误信息。 加载引导程序 当自检完成后…

别让商业机密跑了:企业如何锁紧数据大门

Facebook 用户数据泄露:2018年,Cambridge Analytica公司非法获取了8700万Facebook用户的个人数据,并用于政治广告定向;Capital One 金融公司泄密:2019年,美国银行Capital One遭到黑客攻击,导致106万个加拿大用户的个人信息以及1亿名美国用户的信息泄露。这些事件凸显了数…

WPF中文网随笔(2)

常用布局控件Panel其实是一个抽象类,不可以实例化,WPF所有的布局控件都从Panel继承而来 public abstract class Panel : FrameworkElement, IAddChild 它继承于FrameworkElement基类和IAddChild接口。所以,所有 Panel 元素都支持 FrameworkElement 定义的基本大小调整和定位…

一次配置Docker环境的完整记录

一次配置Docker环境的完整记录 Docker环境搭建报错与解决报错一报错二报错三 Docker环境搭建 本节介绍了一次配置docker环境的完整记录&#xff1a; 编写Dockerfile文件&#xff1a; FROM pytorch/pytorch:1.10.0-cuda11.3-cudnn8-develRUN rm /etc/apt/sources.list.d/cuda.l…

Avalonia实现Visual Studio风格标题栏的方法

Visual Studio风格的标题栏可以更节省屏幕空间,个人认为其实比Ribbonbar和传统菜单都要更先进一些,更紧凑,利用效率更高。我在AvaloniaSamples项目中添加了一个这种Demo,展示了如何在Avalonia 11中分别实现经典风格、Macos风格和Visual Studio风格的标题栏:关键点就在于Ma…

基于Qt的二维码生成与识别

基于Qt的二维码生成与识别 一、获取QZxing开源库 1.通过封装的QZxing开源库生成和识别二维码&#xff0c;下载地址&#xff1a;GitCode - 开发者的代码家园https://gitcode.com/mirrors/ftylitak/qzxing/tree/master。 2.下载解压后&#xff0c;使用Qt Creator xx&#xff0…

BLE V5.4新功能特性

Bluetooth SIG 的 Bluetooth v5.4 核心规范为支持 Bluetooth 的物联网设备带来了多项优势,重点是增强了通信能力、安全性和效率。这些改进尤其适用于涉及大量设备的应用,如零售、资产跟踪和智慧家居环境。 主要优势包括:与数千个终端节点进行双向通信带响应的周期性广播 (PA…

taro 开发小程序 遇到 SyntaxError: Unexpected token 语法错误等,

检查下 config 配置,需要变量值如果为字符串,则需要填写单引号+双引号

图像简单处理

需求:对上面多张这样的图像,将成员识别出来,读取本周活跃值。生成一张全部由成员组成的大图 思路:使用OpenCVSharp进行目标区域边框检测,根据大小过滤目标区域。使用Tesseract对指定位置进行文字识别(貌似识别精度不高,有乱码。) 主要代码using System; using System.C…

4月17日

VS2022运行分析器发生了很多问题,未经处理的异常

基于JSP的电器网上订购系统

本系统利用现在比较广泛的JSP结合后台SpringMybatisAjax编写程序的方式实现的。 在意见箱板块中&#xff0c;运用JSP通过JDBC技术和后台的数据库进行交互的方式将数据信息反馈给用户和管理员&#xff1b;在登录系统中&#xff0c;使用Ajax技术实现异步交互&#xff0c;在不更新…

Hive引擎底层初探

1、什么是HiveHive是一个基于Hadoop的数据仓库工具,用于处理和分析大规模结构化数据。Hive提供了类似SQL的查询语言(HiveQL),使得熟悉SQL的用户能够查询数据。Hive将SQL查询转换为MapReduce任务,以在Hadoop集群上执行数据处理和分析。 2、Hive起源 回答这个问题之前,先介绍下…

【自定义样式】TreeView 的应用

TreeView展开所有节点<TreeView.ItemContainerStyle><Style TargetType="{x:Type TreeViewItem}"><Setter Property="IsExpanded" Value="True"></Setter></Style></TreeView.ItemContainerStyle>注意:使用…

vue3 + vant4 checkbox多选弹框

实现效果代码如下 多选组件 DictSelect.vue <template><van-popup :show="showPicker" position="bottom" :style="{ height: 34vh }"><div class="con"><div class="confirmBtns"><van-button …

设计模式——2_9 模版方法(Template Method)

人们往往把任性也叫做自由&#xff0c;但是任性只是非理性的自由&#xff0c;人性的选择和自决都不是出于意志的理性&#xff0c;而是出于偶然的动机以及这种动机对感性外在世界的依赖 ——黑格尔 文章目录 定义图纸一个例子&#xff1a;从文件中获取信息分几步&#xff1f;Rea…

【自定义样式】ContextMenu

ContextMenu样式对应的xaml代码:<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Style TargetType="{x:Type ContextMenu}">&l…

OpenHarmony南向开发实例:【游戏手柄】

介绍 基于TS扩展的声明式开发范式编程语言&#xff0c;以及OpenHarmony的分布式能力实现的一个手柄游戏。 完成本篇Codelab需要两台开发板&#xff0c;一台开发板作为游戏端&#xff0c;一台开发板作为手柄端&#xff0c;实现如下功能&#xff1a; 游戏端呈现飞机移动、发射…

ContextMenu【自定义】

ContextMenu样式对应的xaml代码:<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Style TargetType="{x:Type ContextMenu}">&l…

携程旅行 abtest

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章…