zoukankan      html  css  js  c++  java
  • Log4j2 中format增加自定义的参数

    首先收藏一下log4j2的官网:http://logging.apache.org/log4j/2.x/manual/plugins.html#TypeConverters

    对于这种需要,可以使用log4j2插件机制。

    具体做法:

    package com.hotusm.ticket.interceptor;
    
    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;
    
    /**
     * Created by hotusm 2017/2/16.
     */
    @Plugin(name = "LogIdPatternConverter", category = PatternConverter.CATEGORY)
    @ConverterKeys({ "y", "logId" })
    public class LogIdPatternConverter extends LogEventPatternConverter {
    
        private static final LogIdPatternConverter INSTANCE =
                new LogIdPatternConverter();
    
        public static LogIdPatternConverter newInstance(
                final String[] options) {
            return INSTANCE;
        }
    
        private LogIdPatternConverter(){
            super("LogId", "logId");
        }
    
        @Override
        public void format(LogEvent event, StringBuilder toAppendTo) {
            toAppendTo.append(Math.random());
        }
    
    }

    定义一个类继承LogEventPatternConverter

    1.定义的这个类必须提供一个newInstance方法,参数是final String[] options,返回值为定义的类(对于是否是单例没有明确的要求)

    2.提供一个私有的构造函数,调用父类的构造函数,函数需要提供两个参数 第一个参数是转换器的名称,第二个是css样式,

    3.还有主要的工作format,这里有两个参数,LogEvent是系统已经存在的一些可选数据,StringBuilder 表示的是最终的输出字符流。一般都是将自定义的
    append进去

    4.注解:Plugin 表示的是这是一个插件,name是名称,category为PatternConverter.CATEGORY(目前插件只有这个选择)
    ConverterKeys表示的就是自定义的参数,可以多个

    定义好了之后,然后在log4j2的配置文件中设置

    <configuration status="WARN" packages="com.hotusm.ticket.interceptor">

    打印格式:

    <Property name="patternStyle">lodId:%-10y %d{HH:mm:ss.SSS}

    最后就ok了。下面是输出:

      



  • 相关阅读:
    VS2003在解决方案范围内搜索卡死问题的解决
    文言古诗词
    中学名句
    Linux查看系统中socket状态
    为什么我希望用C而不是C++来实现ZeroMQ
    获取进程的IO计数
    Win7查看开关机记录
    VS的release工程设置为可调试
    VC开发中一些问题的解决
    shell脚本0——”一切皆文件“, 认识Shell
  • 原文地址:https://www.cnblogs.com/zr520/p/6406443.html
Copyright © 2011-2022 走看看