Log4J学习【三十三】错误处理之ErrorHandler
来源:互联网 发布:windows sdk 8.1下载 编辑:程序博客网 时间:2024/04/28 05:22
上一章讲的除了三个error方法,可能另外的三个方法还是稍微有些难以理解,我们先来看看Log4J为我们提供的ErrorHandler。
默认情况下,每一个Appender都对应一个默认的ErrorHandler,叫做OnlyOnceErrorHandler,这个errorHandler是在AppenderSkeleton中定义的:
protected ErrorHandler errorHandler = new OnlyOnceErrorHandler();
这个ErrorHandler会干什么呢?我们来做一个测试:
log4j.rootLogger=DEBUG,file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.file=log.log
log4j.appender.file.layout=org.apache.log4j.SimpleLayout
创建一个FileAppender,日志文件名称为log.log。然后我们在文件目录下创建一个log.log文件,然后设置文件属性为只读。创建一个测试案例:
@Test
public void testOnlyOnceErrorHandler(){
Logger logger=Logger.getLogger("cd.itcast");
logger.warn("logger warn");
logger.warn("logger warn");
logger.warn("logger warn");
}
在测试中,我们连续记录三条日志,运行测试:
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: log.log (拒绝访问。)
观察控制台中的输出,首先,使用log4j:ERROR输出了一次错误,这个错误就是OnlyOnceErrorHandler打印的;其次,只打印了一次错误,这个就是onlyonce的意思。其实每次做日志,都会尝试向log.log文件中添加日志内容,但因为是Onlyonce,所以,只会把第一次出错打印。看到了OnlyOnceErrorHandler的表现形式之后,我们来看看他的代码:
public void error(String message, Exception e, int errorCode, LoggingEvent event) {
if (e instanceof InterruptedIOException || e instanceof InterruptedException) {
Thread.currentThread().interrupt();
}
if (firstTime) {
LogLog.error(message, e);
firstTime = false;
}
}
在这个类里面,就只实现了error方法,在这个方法中,首先记录是否是第一次出错,如果是第一次出错,就直接打印错误。这个OnlyOnceErrorHandler在配置上没有任何代表性,他只是很简单的给了我们一个ErrorHandler的实现方式。
默认情况下,每一个Appender都对应一个默认的ErrorHandler,叫做OnlyOnceErrorHandler,这个errorHandler是在AppenderSkeleton中定义的:
protected ErrorHandler errorHandler = new OnlyOnceErrorHandler();
这个ErrorHandler会干什么呢?我们来做一个测试:
log4j.rootLogger=DEBUG,file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.file=log.log
log4j.appender.file.layout=org.apache.log4j.SimpleLayout
创建一个FileAppender,日志文件名称为log.log。然后我们在文件目录下创建一个log.log文件,然后设置文件属性为只读。创建一个测试案例:
@Test
public void testOnlyOnceErrorHandler(){
Logger logger=Logger.getLogger("cd.itcast");
logger.warn("logger warn");
logger.warn("logger warn");
logger.warn("logger warn");
}
在测试中,我们连续记录三条日志,运行测试:
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: log.log (拒绝访问。)
观察控制台中的输出,首先,使用log4j:ERROR输出了一次错误,这个错误就是OnlyOnceErrorHandler打印的;其次,只打印了一次错误,这个就是onlyonce的意思。其实每次做日志,都会尝试向log.log文件中添加日志内容,但因为是Onlyonce,所以,只会把第一次出错打印。看到了OnlyOnceErrorHandler的表现形式之后,我们来看看他的代码:
public void error(String message, Exception e, int errorCode, LoggingEvent event) {
if (e instanceof InterruptedIOException || e instanceof InterruptedException) {
Thread.currentThread().interrupt();
}
if (firstTime) {
LogLog.error(message, e);
firstTime = false;
}
}
在这个类里面,就只实现了error方法,在这个方法中,首先记录是否是第一次出错,如果是第一次出错,就直接打印错误。这个OnlyOnceErrorHandler在配置上没有任何代表性,他只是很简单的给了我们一个ErrorHandler的实现方式。
0 0
- Log4J学习【三十三】错误处理之ErrorHandler
- Log4J学习【三十四】错误处理之FallbackErrorHandler
- Log4J学习【三十二】错误处理
- Log4J学习【三十五】错误处理之FallbackErrorHandler续
- Struts+Spring+Hibernate项目中使用log4j时发生如下错误"org.apache.log4j.spi.ErrorHandler"
- errorHandler
- 学习笔记之错误处理
- Kettle学习之错误处理
- log4j日志处理学习
- OpenFire源码学习之三十三:windows打包
- opencv学习(三十三)之霍夫变换
- React学习之扩展PureRenderMixin(三十三)
- Zend Framework学习 之错误处理
- php学习之基础五 错误处理
- hadoop学习之wordcount运行错误处理
- log4j学习之SocketAppender
- 学习笔记之log4j
- java基础之Flex弹性布局、JSP错误处理以及Log4J
- 源码分析Hadoop FileInputFormat如何分片
- IOS XMPP的实践
- c++02
- 【 D3.js 进阶系列 — 5.0 】 直方图
- Mysql 数据文件类型解析
- Log4J学习【三十三】错误处理之ErrorHandler
- 文件编译
- 80端口被NT kernel & System 占用pid 4
- Android 在OnCreate()中获取控件高度与宽度
- Log4J学习【三十四】错误处理之FallbackErrorHandler
- Spring框架中获得DataSource对象的方法
- 装箱和拆箱 (判断两个类型转换是否构成装箱或拆箱,要看它们是否存在继承关系)
- php 生成 pdf ,dompdf 库使用
- Ubuntu 14.10 中安装 VMware11 Tools