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了。下面是输出:

      



  • 相关阅读:
    线程内唯一对象HttpContext
    asp.net MVC 路由机制
    asp.net MVC 路由机制 Route
    asp.net MVC 路由系统
    asp.net中的路由系统
    Nodejs 高并发长链接TCP链接的服务器设计问题
    关于SharePoint 2010中不能使用AjaxControlToolkit的解决办法
    百度编辑器批量上传图片自动排版
    phpcms后台部分修改
    PHP导入excel发送网易云信短信
  • 原文地址:https://www.cnblogs.com/zr520/p/6406443.html
Copyright © 2011-2022 走看看