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

Log4j2 中format增加自定义的参数

  

上一篇:028 Android 旋转动画+病毒查杀效果+自定义样式的ProgressBar


下一篇:超详细的Xcode代码格式化教程,可自定义样式