Log4j学习自定义Appender
2012-09-23 11:16
330 查看
说明: 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
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
相关文章推荐
- log4j学习之道:Log4j自定义Appender介绍
- log4j自定义 appender
- Log4j2、Log4j、Logback自定义Appender实现
- 自定义Appender ,实现输出log4j日志到GUI
- Log4J学习【二十一】常用的Appender之FileAppender
- 自定义实现log4j的FileAppender
- Log4j之自定义Appender
- Log4J学习【二十三】常用的Appender之SocketAppender
- Log4J学习【二十二】常用的Appender之DailyRollingFileAppender
- Log4j自定义Appender
- Log4j自定义Appender介绍
- 学习如何用自己的 appender 来扩展 log4j 框架
- Log4J学习【二十三】常用的Appender之SocketAppender
- log4j Logger and FileAppender 的学习
- 学习如何用自己的 appender 来扩展 log4j 框架
- Log4J学习【二十四】常用的Appender的使用一
- 自定义log4j的Appender
- Log4j自定义Appender介绍
- Log4J学习【十八】常用的Appender
- Log4J学习【二十五】常用的Appender的使用二