这里简单说一下实现方法:
定义一个类CustomAppender继承AbstractAppender
使用@Plugin定义该Appender的基础信息如:@Plugin(name = “Custom”, category = “Core”, elementType = “appender”, printObject = true)
@PluginFactory注解创建CustomAppender实例
重写append方法,实现自己想要的基本功能。
这里简单说一下,如果是想实现类似FileAppender的功能,将信息打印到流里,需继承AbstractOutputStreamAppender类。具体可直接查看FileAppender源码即可。
整个示例代码如下:
/**
* 自定义Appender
* Author: gefangshuai
* Create: 2014-07-29 16:05
*/
@Plugin(name = "Custom", category = "Core", elementType = "appender", printObject = true)
public class CustomAppender extends AbstractAppender {
protected CustomAppender(String name, Filter filter, Layout extends Serializable> layout, boolean ignoreExceptions) {
super(name, filter, layout, ignoreExceptions);
}
@PluginFactory
public static CustomAppender createAppender(@PluginAttribute("name") String name,
@PluginAttribute("ignoreExceptions") boolean ignoreExceptions,
@PluginElement("Layout") Layout layout,
@PluginElement("Filters") Filter filter) {
if (name == null) {
LOGGER.error("No name provided for CustomSwingAppender");
return null;
}
if (layout == null) {
layout = PatternLayout.createDefaultLayout();
}
return new CustomAppender(name, filter, layout, ignoreExceptions);
}
@Override
public void append(LogEvent event) {
System.out.println(new String(this.getLayout().toByteArray(event)));
}
}
赞过:
赞 正在加载……
相关