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

logback 替换日志中的类名

在Logback中,你可以通过自定义一个`Converter`来改变日志输出中的类名格式。`Converter`是Logback中用于将事件数据转换为字符串的组件。以下是创建自定义类名格式的步骤:

1. **创建一个Converter类**:这个类需要实现`ch.qos.logback.classic.spi.IThrowableProxyConverter`接口或继承`ch.qos.logback.classic.pattern.ClassicConverter`类。

2. **实现`convert`方法**:在这个方法中,你将定义如何从`ILoggingEvent`对象中提取类名,并按照你的需求格式化它。

3. **注册Converter**:在你的Logback配置文件中注册你的Converter。

下面是一个简单的示例,展示了如何创建一个自定义Converter来输出类名的最后一个部分(即简单类名):

```java
import ch.qos.logback.classic.pattern.ClassOfCallerConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;

public class CustomClassOfCallerConverter extends ClassOfCallerConverter {
    @Override
    public String convert(ILoggingEvent event) {
        String className = super.convert(event);
        if (className != null) {
            int lastDotIndex = className.lastIndexOf('.');
            if (lastDotIndex != -1) {
                return className.substring(lastDotIndex + 1);
            }
        }
        return className;
    }
}
```

然后,在你的Logback配置文件中,你可以使用这个自定义的Converter:

```xml
<configuration>
    <conversionRule conversionWord="customLogger" converterClass="your.package.CustomClassOfCallerConverter"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %customLogger{1} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
```

在这个配置中,`%customLogger`是你定义的转换词(conversionWord),它将被替换为你的自定义Converter的输出。`{1}`参数是可选的,可以用来指定你想要输出的类名部分,类似于`%logger{1}`的用法。

请确保将`your.package`替换为你的Converter类的实际包名。这样,Logback就会使用你的Converter来格式化类名,并按照你定义的方式输出到日志中。

或者 :

<conversionRule conversionWord="customLogger" converterClass="com.xxx.CustomClassOfCallerConverter"/>
<property name="LOG_PATTERN" value="[%d] [%t] [%-5p] [%customLogger]- %m%n"/>

--------------

 logback的pattern配置

转换字符效果
%logger生成类名称,假设logger的名字为com.hello.rachel.service.SayService
%logger{0} ---> SayService
%logger{10} ---> c.h.r.s.SayService
%logger{25} ---> c.h.rachel.service.SayService
%d{pattern}或%date生成日期: %d ---> 2022-07-05 19:00:00,000
%caller生成日志调用者的位置信息,依赖JVM实现 %caller{2} ---> 0 [main] DEBUG - logging statement Caller+0 at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22) Caller+1 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)
%line 或 %L生成日志请求所在的行号
%m 或 %msg 或 %message生成日志具体信息
%n行分隔符
%p 或 %level生成日志级别
%t 或 %thread生成日志事件的线程名
%X{key:-defaultVal} 或 %mdc生成日志事件线程的MDC内容
%replace(p)在子模式p产生的字符中,将所有出现正则表达式r的地方替换成t


 


http://www.kler.cn/a/374370.html

相关文章:

  • 【速成51单片机】1.已经学过stm32如何快速入门51单片机——软件下载与安装
  • 文档解析丨高效准确的PDF解析工具,赋能企业非结构化数据治理
  • 芯片Tapeout power signoff 之IR Drop Redhawk Ploc文件格式及其意义
  • jetson Orin nx + yolov8 TensorRT 加速量化 环境配置
  • React Native 集成原生Android功能
  • 基于STM32F103控制L298N驱动两相四线步进电机
  • 【论文复现】以思维链为线索推理隐含情感
  • git commit应遵循的提交规范
  • 【设计模式】Java创建型设计模式之工厂模式魔法:打造灵活的冰箱工厂
  • 科研项目:利用AI大模型获得基金资助的10个原则
  • 家用储能用什么电表呢?
  • CentOS 9 Stream 上安装 WebStorm
  • 在浏览器和Node.js环境中使用Puppeteer的Rollup与Webpack打包指南
  • 【p2p、分布式,区块链笔记 分布式容错算法】: 拜占庭将军问题+实用拜占庭容错算法PBFT
  • 【客户端开发】electron 中无法使用 js-cookie 的问题
  • 基于单片机的家用电器电能测量仪设计
  • ElSelect 组件的 onChange 和 onInput 事件的区别
  • 三菱FX5UPLC 安全功能
  • EMQX MQTT消息服务器安装内网穿透配置WS公网地址远程连接
  • C# 编程基础:深入解析构造函数与析构函数
  • ClickHouse 5节点集群安装
  • node.js_npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1
  • 深入了解 Three.js 中的材质与光照
  • 信捷 PLC C语言 简易绝对运动函数BMC_A_DRVA_BODY在POU FC中的使用
  • C++初阶教程——类与对象(中篇)
  • 2024年NSSCTF秋季招新赛-WEB