转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6399191.html

在项目中的应用见: https://github.com/ygj0930/CoupleSpace

在我们的项目运行过程中,偶尔会有预料不到的异常发生。如果能在发生异常时把异常的详细情况,比如什么时候在哪一行代码发生了什么异常,严重级别是多少之类的信息记录下来,那么我们就可以在维护时根据这个记录异常的文件针对性地去修复这些异常了。log4j为我们解决了这个问题。

log4j是apache提供给我们的一个处理异常的插件,利用它,我们可以在某些可能出现运行错误的地方用代码做好处理异常的准备。比如:把异常信息在控制台打印出来并把异常以某种易解读的格式保存在一个运行日志文件里。下面,我们来看一下log4j的具体用法。

一:下载log4j插件的jar包

下载地址:http://logging.apache.org/log4j/1.2/download.html

解压后,得到log4j和commons-logging两个jar包,并把上面两个jar包添加到项目里。

二:定制配置信息。

log4j是通过logger对象来处理异常信息的,而关于logger对象的一系列定义却是通过配置文件来实现的。

我们在src目录下新建一个properties文件,如:log4j.properties

然后,我们在该配置文件里进行logger对象的定义。主要有两部分:

1:配置根logger对象

log4j.rootLogger = 【级别】,appender1,appender2,appender3......

级别主要有4个,分别为:ERROR>WARN>INFO>DEBUG。这里的级别决定了程序运行时出现的错误会不会被这里定义的appender处理,只有当出现的错误等级大于等于appender的级别时才会被打印以及写入日志文件。

rootLogger可以配置多个appender,每个appender负责把异常记录作不同处理,比如:appender1把异常记录打印到控制台,appender2把记录写入日志文件...

2:对每个appender对象进行进一步的配置

log4j.appender.appenderName = 具体是哪种appender
//配置appender的具体信息,比如:异常输出到哪个文件、异常信息的保存格式...
log4j.appender.appenderName.option1 = value1

log4j.appender.appenderName.option = valueN

Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(输出到控制台),

org.apache.log4j.FileAppender(输出到文件),

org.apache.log4j.DailyRollingFileAppender(输出到每天产生的一个日志文件),

org.apache.log4j.RollingFileAppender(输出到文件大小到达指定尺寸的时候产生一个新的文件的日志文件),

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

每个appender主要需要配置的option有好很多,比如:layout、file、MaxFileSize、Append等,具体那些选项要配置因appender对象的种类而定。

比如,DailyRollingFileAppender需要配置DatePattern项来指定生成日志文件的频率:

log4j提供了几种异常信息的格式,主要有:

org.apache.log4j.HTMLLayout(以HTML表格形式布局)

org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

其中,常用的是PatternLayout,我们可以灵活地指定异常信息的打印、保存格式。打印参数如下:

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) 例如:log4j.appender.appender1.layout.PatternLayout=d%-m%n% ,则异常打印的格式为 时间-异常信息文字+换行 三:在项目中通过logger对象处理异常
1:创建Logger对象
Logger logger=Logger.getLogger(getClass().getName());

2:在可能出现异常的地方通过以下方法打印、输出日志记录到文件

logger.debug ("message")/ logger.debug ("message",exception)
logger.info ("message")/ logger.info ("message",exception)
logger.warn ("message")/ logger.warn ("message",exception)
logger.error ("message")/ logger.error ("message",exception)

各个appender会根据自身的级别与上面语句插入的记录的级别比较,小于等于时就会处理该记录,输出到控制台或到日志文件。

四:查看日志

在项目运行的web服务器的bin目录下找到配置appender时  log4j.appender.File=fileName  项的fileName文件,即为项目运行时的被写入的异常记录。

												

JavaWeb项目异常管理之log4j的使用教程的更多相关文章

  1. 第一个远程javaweb项目测试全过程

    2017-5-20,在这个奇特的日子,我不再满足于在本地测试javaweb,于是在上腾讯云买了第一个云服务器,由于是学生认证,所以一个月只要10块钱,还是要抢的,每天早上9点开抢 打开后,发现其实是一 ...

  2. log4j在javaWeb项目中的使用

    在前边的文章中对log4j的配置文件进行了说明,今天介绍如何在普通的javaWeb项目中使用log4j. 在日常的开发过程中,日志使用的很频繁,我们可以利用日志来跟踪程序的错误,程序运行时的输出参数等 ...

  3. Go语言项目的错误和异常管理 via 达达

    Go语言项目的错误和异常管理 最近连续遇到朋友问我项目里错误和异常管理的事情,之前也多次跟团队强调过错误和异常管理的一些概念,所以趁今天有动力就赶紧写一篇Go语言项目错误和异常管理的经验分享. 首先我 ...

  4. JavaWeb项目中获取对Oracle操作时抛出的异常错误码

    最近在项目中碰到了这么一个需求,一个JavaWeb项目,数据库用的是Oracle.业务上有一个对一张表的操作功能,当时设置了两个字段联合的唯一约束.由于前断没有对重复字段的校验,需要在插入时如果碰到唯 ...

  5. 转:基于Maven管理的JavaWeb项目目录结构参考

    通常在创建JavaWeb项目时多多少少都会遵循一些既定的比较通用的目录结构,下面分享一张基于Maven管理的JavaWeb项目目录结构参考图: 上图仅是参考,不同项目不同团队都有自己的约定和规范. 个 ...

  6. Javaweb项目中出现java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.异常

    javaweb项目中java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represent ...

  7. 普通的javaweb项目和用maven管理的javaweb project的目录结构的区别

      图一,图二 这种就是单独的建立普通的(也就是没有用maven管理包)javaweb项目的结构目录,这种需要将普通的jar依赖放到lib目录下,之后通过bulid   图一

  8. javaweb项目-医者天下 (Spring+SpringMVC+MyBatis)

    项目下载地址:http://download.csdn.net/detail/qq_33599520/9826683 项目完整结构图: 项目简介: 医者天下项目是一个基于Spring+SpringMV ...

  9. 使用maven搭建ssm框架的javaweb项目

    目前主流的javaweb项目,常会用到ssm(Spring+Spring MVC+Mybatis)框架来搭建项目的主体框架,本篇介绍搭建SSM框架的maven项目的实施流程.记之共享! 一.SSM框架 ...

随机推荐

  1. 梅尔罗斯百度云在线观看迅雷下载Patrick Melrose磁力BT下载

    原名:Patrick Melrose 地区:英国 语言:英语 首播:2018-05-12(美国) 电视台:Showtime 类型:剧情 别名:浮生若梦 编剧:大卫·尼克尔森 导演:爱德华·贝尔格 主演 ...

  2. 副总统第一至三季/全集Veep迅雷下载

    本季第一.二.三季 Veep Season 1 (2012-2014)看点:<副总统>讲述了Selina Meyer从一名参议员成为副总统后,开始面对成堆的突发状况,很快,她便认识到,成为 ...

  3. Nvidia驱动正确安装过程

    找到适合的正确的驱动 去nvidia驱动官网下载 卸载掉原有驱动 sudo apt-get remove –purge nvidia* 安装驱动 进入命令行界面 Ctrl-Alt+F1 给驱动run文 ...

  4. 指定文件兼容性模式 < meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />的意义

    X-UA-Compatible是神马? X-UA-Compatible是IE8的一个专有<meta>属性,它告诉IE8采用何种IE版本去渲染网页,在html的<head>标签中 ...

  5. emouse思·睿—评论与观点整理之一

    虽说我主要做的硬件,平时的兴趣爱好比较关注移动互联网,混迹于虎嗅.爱范儿.雷锋网.36Kr.cnBeta.瘾科技.i黑马.TechWeb等这类科技以及创业媒体,遗憾的是系统的去写的并不多,好在还算充分 ...

  6. Cantor展开式

    X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,a为整数,并且0<=ai<i(1<=i<=n).这就是康托展开 ...

  7. knockout 多值绑定

    knockout 这种东西现在已经很流行了,相信很多人对它的使用都已经很熟悉了,最近项目开发中发现knockout 绑定用的有些不怎么充分,发现整个page的code 有点累赘. 1.在绑定click ...

  8. Install OpenCV-Python in Ubuntu

    之前安装python版opencv,需要下载whl文件,进行安装,这是在window环境下的: 安装opencv_python,下载whl包 安装系统python下的opencv 今天发现一个简单的方 ...

  9. Remote Desktop Session中如何触发Ctrl+Alt+Delete?

    Ctrl+Alt+End is a keyboard shortcut used in a Remote Desktop Session to display the security dialog ...

  10. mysql分布式数据库中间件对比

    目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的.所以总结一个关于中间件比较的系列,希望可以对大家有帮助. 1. 什么是中间件 传统的架构模式就是 应用 ...