首页 > 其他分享 >SpringBoot日志的使用

SpringBoot日志的使用

时间:2024-08-09 15:54:17浏览次数:13  
标签:traceId qos SpringBoot 使用 import skywalking logback 日志

背景:

在生产环境中,排程问题都是通过日志,所以日志很重要。

日志有三个部分组成

  • Logger

  • Appender

  • Layout

一般日志都会有对应的配置文件, log4j2.xml 或者是 logback-spring.xml ,日志的输出格式在 Pattern 标签中

1、确认日志框架:确认日志框架是 log4j2logback 还是其他的框架

2、了解日志文件输出格式的语法:Log4j – Log4j 2 Layouts (apache.org)

3、使用skywalkingtraceId

​ 项目都是多线程的,同一时间可能会有多个线程的日志,这样查看某个请求的日志就会很混乱,怎样只看一个请求的日志??

如果项目集成了skywalking,那就可以用 traceId

SpringBoot集成 skywalkingtraceId

引入依赖即可(如果是logback,引入logback相关依赖即可)

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-log4j-2.x</artifactId>
    <version>${version}</version>
</dependency>
        
        
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>9.3.0</version>
</dependency>

日志配置变量映射

不能修改现有的日志配置文件,并且想要将 skywalkingtraceId映射到配置文件中指定的位置

引入依赖

<!-- https://mvnrepository.com/artifact/org.apache.skywalking/apm-toolkit-trace -->
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>9.3.0</version>
</dependency>

在日志文件配置中,[%X{tid}] logback用了非标准语法,怎么给他赋值

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.pattern.Converter;
import ch.qos.logback.core.pattern.PatternLayout;
import ch.qos.logback.core.spi.DeferredProcessingAware;

import java.util.Map;
@Plugin(
    name = "TraceIdConverter",
    category = "Converter"
)
@ConverterKeys({"tid"})
public class TidConverter extends Converter<Object> {

    @Override
    public String convert(ILoggingEvent event) {
        Map<String, String> mdc = event.getMDCPropertyMap();
      	// 获取skywalking的traceId
        String traceId = TraceContext.traceId();
        return traceId != null ? "[" + traceId + "]" : "[N/A]";
    }

    @Override
    public boolean isDeferredProcessingAware() {
        return false;
    }
}

标签:traceId,qos,SpringBoot,使用,import,skywalking,logback,日志
From: https://www.cnblogs.com/miefind/p/18350877

相关文章

  • 【Pyspark-驯化】一文搞懂Pyspark中过滤数据when和otherwise函数的使用技巧
    【Pyspark-驯化】一文搞懂Pyspark中过滤数据when和otherwise函数的使用技巧 本次修炼方法请往下查看......
  • SpringBoot基础 - 准备工作(打包成可运行的jar)
    目录A.简介B.下载一.配置本地Maven二.修改阿里云maven镜像三. 导入SpringBoot的相关依赖C.例子D.快捷使用A.简介SpringBoot是一种用于简化Spring应用开发的框架,它具有以下特点和优势:一、简化配置传统Spring应用配置的复杂性:在传统的Spring......
  • gitignore文件的使用
    在使用GitLab进行版本控制时,如果你想要忽略一些文件或目录不被提交(比如生成的权重、预测的图片等),你可以在项目的根目录下创建或编辑一个.gitignore文件。在这个文件中,你可以列出那些你希望Git忽略的文件和目录的模式。1.基本语法每条规则占一行空白行或以#开头的行:这......
  • Nuxt3 axios封装 使用axios接口请求
    一、先安装axiosnpminstalladdaxios封装请求request.ts文件importaxiosfrom'axios'import{ElMessage,Message}from"element-plus"import{getToken}from'./token.js'constservice=axios.create({baseURL:'/api',//......
  • OpenCV图像滤波(6)高斯滤波函数GaussianBlur()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述函数使用高斯滤波器对图像进行模糊处理。该函数使用指定的高斯核对源图像进行卷积。支持原位过滤。高斯模糊是一种有效的图像平滑技术,可以减少图像中的噪声和细节。函数原型vo......
  • 三、Tauri 使用(各种设置)
    1.开启所有API使用{"tauri":{ "allowlist":{  "all":true, }}}2.关闭鼠标右键window.addEventListener('contextmenu',(e)=>e.preventDefault(),false);​//在生成环境关闭鼠标右键if(import.meta.env.MODE==="......
  • 二、Tauri 使用(http请求 axios)
    1.启用该功能        在tauri.conf.json文件中启用该功能,配置要请求的API路径,多个API的情况使用逗号隔开就可以了{ "tauri":{  "allowlist":{   "http":{    "all":true,    "request":true,    "scope":["http:......
  • OpenCV图像滤波(7)cv::getDerivKernels() 函数的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述函数返回用于计算空间图像导数的滤波系数。该函数计算并返回用于空间图像导数的滤波系数。当ksize=FILTER_SCHARR时,生成Scharr3x3核(参见Scharr)。否则,生成Sobel核(参见Sob......
  • php 使用phpoffice/phpword导出word
    安装指令composerrequirephpoffice/phpword 基本设置/***//设置常用文本样式*'size'=>12,//文字大小*'name'=>'宋体',//字体名称*'bold'=>true,//加粗*'italic'......
  • 如何使用 Python 从 Excel 工作表中读取正斜杠
    我有20多列的Excel工作表,如果我想选择不包含文本n/a的行,是否可以将n/a作为文本传递并找到它?我尝试过的代码是,''''将pandas导入为pd进口重新导入操作系统defextract_data(input_file):#读取输入的Excel文件df=pd.read_excel(input_file)#Checkif'......