Log4j2中format增加⾃定义的参数
⾸先收藏⼀下log4j2的官⽹:/log4j/2.x/manual/plugins.html#TypeConverters
对于这种需要,可以使⽤log4j2插件机制。
具体做法:
package com.hotusm.ticket.interceptor;
import org.apache.LogEvent;
import org.apache.onfig.plugins.Plugin;
import org.apache.pattern.ConverterKeys;
import org.apache.pattern.LogEventPatternConverter;
import org.apache.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进去
log4j2不打印日志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了。下⾯是输出:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论