自定义log4j2的PatternLayout参数

1.添加类

package com.yuanian.micro.config;

import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.pattern.ConverterKeys;
import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;
import org.apache.logging.log4j.core.pattern.PatternConverter;

/**
 * @author liujy
 * @date 2019/12/18 16:46
 * 增加serviceName到日志的pattern
 **/
@Plugin(name = "ServiceNamePatternConverter", category = PatternConverter.CATEGORY)
@ConverterKeys({"s", "serviceName"})
public class ServiceNamePatternConverter extends LogEventPatternConverter {
    private  String SERVICENAME = "ms-job-console";

    private static final ServiceNamePatternConverter INSTANCE =
            new ServiceNamePatternConverter();

    public static ServiceNamePatternConverter newInstance(
            final String[] options) {
        return INSTANCE;
    }

    private ServiceNamePatternConverter() {
        super("serviceName", "serviceName");
    }

    @Override
    public void format(LogEvent logEvent, StringBuilder toAppendTo) {
        toAppendTo.append(SERVICENAME);
    }
}
  1. 修改log4j2.yml文件,添加变量Configuration.packages为刚才创建类所在的包
Configuration:
  status: warn
  packages: com.yuanian.micro.config

3.在log4j2.yml中使用自定义的参数

Configuration:
  status: warn
  packages: com.yuanian.micro.config
  Appenders:
    Console:  #输出到控制台
      name: CONSOLE
      target: SYSTEM_OUT
      ThresholdFilter:
        level: info
        onMatch: ACCEPT
        onMismatch: DENY
      PatternLayout:
        pattern: "%d %p %c [serviceName = %s] [Class = %c] [File = %F] [Line = %L] [Method = %M] [%t] %m%n"

4.效果如下:

2019-12-18 17:24:00,183 WARN com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder [serviceName = ms-job-console] [Class = com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder] [File = NacosPropertySourceBuilder.java] [Line = 86] [Method = loadNacosData] [main] Ignore the empty nacos configuration and get it based on dataId[ms-job-console] & group[DEFAULT_GROUP]

5.不可以把参数定义重复,log4j2自定义的参数可以参考下面的地址 https://blog.csdn.net/guoquanyou/article/details/5689652


本文参考链接:https://www.cnblogs.com/zr520/p/6406443.html

posted @   夜洛IT后端技术分享  阅读(4215)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示