说明: Log4j支持自定义的输出。所有的输出都实现自Appender接口。一般来说,自定义输出只需要继承AppenderSkeleton类,并实现几个方法就可以了。
1。代码如下:
package com.logging.log4j;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.ErrorCode;
import org.apache.log4j.spi.LoggingEvent;public class CountConsoleAppender extends AppenderSkeleton {
private int limit;
private int count;
@Override
protected void append(LoggingEvent e) {
// TODO Auto-generated method stub
if(layout == null){
errorHandler.error("没有设置"+name+"]的输出布局", null, ErrorCode.MISSING_LAYOUT);
return;
}
if(count > limit){
errorHandler.error("输出次数"+count+"超过了"+getName()+"的限制"+limit, null, ErrorCode.WRITE_FAILURE);
return;
}
System.out.println("_______________"+this.layout.format(e));
if(!layout.ignoresThrowable()){
String[] t = e.getThrowableStrRep();
if(t != null){
for(String s:t){
System.out.println("*******"+s);
}
}
}
count++;
}@Override
public void close() {
// TODO Auto-generated method stub
if(this.closed){
return;
}
this.closed = true;
}@Override
public boolean requiresLayout() {
// TODO Auto-generated method stub
return true;
}public int getLimit() {
return limit;
}public void setLimit(int limit) {
this.limit = limit;
}public int getCount() {
return count;
}public void setCount(int count) {
this.count = count;
}}
log4j.properties配置文件如下:
log4j.category.com.logging.log4j=INFO,COUNTING
log4j.appender.COUNTING=com.logging.log4j.CountConsoleAppender
log4j.appender.COUNTING.limit=2
log4j.appender.COUNTING.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%C]-[%p] %m%n