转载请注明原文地址: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. TX1 flash backup & restore

    备份:耗时2.5小时 ./tegraflash.py --bl cboot.bin --applet nvtboot_recovery.bin --chip 0x21 --cmd "read ...

  2. Android 阴影,圆形的Button

    MainActivity.java package com.kale.gridlayout; import android.app.Activity; import android.graphics. ...

  3. 选中TreeView的某节点,并加背景颜色

    一:按钮事件,遍历所有节点 private void button2_Click(object sender, EventArgs e) { foreach (TreeNode n in TreeVi ...

  4. Visual Studio提示“无法启动IIS Express Web服务器”的解决方法 vs调试显示无法显示此页面 ,vs调试浏览器白页

    有时,在使用Visual Studio运行ASP.NET项目时,会提示“无法启动IIS Express Web服务器”,无法运行,如图: 这一般出现在重装系统之后,或者项目是从别的电脑上复制过来的.解 ...

  5. Android - View的绘制流程一(measure)

    该博文所用的demo结构图: 相应的代码: MainActivity.java: [java] view plain copy <span style="font-family:Mic ...

  6. [leetcode]Wildcard Matching @ Python

    原题地址:https://oj.leetcode.com/problems/wildcard-matching/ 题意: Implement wildcard pattern matching wit ...

  7. 检索(retrieval && search )-单目标-多目标跟踪-MTMC Tracking和 ReID

    跨摄像头多目标跟踪(Multi-Target Multi-Camera Tracking, MTMC Tracking) 跨摄像头多目标跟踪(Multi-Target Multi-Camera Tra ...

  8. 2017 年度码云新增项目排行榜 TOP 50,为它们打“call”

    2017 年度码云新增项目排行榜 TOP 50 正式出炉 !2017 结束了,我们来关注一下这一年里码云上新增的最热门的开源项目吧.此榜单根据 2017 年在码云上新增开源项目的 Watch.Star ...

  9. GIT 如何从另一分支合并特定的文件

    是否遇到过这种情景: 您在一个分支上工作,发现该分支上的某些文件实现的功能已经在其他分支上实现了 但因为这两个分支实现不同的功能,因此不能进行简单的合并工作,但您又不想重复其他已经完成的工作 以下操作 ...

  10. (转)Pixel-Fillrate显卡像素填充率

    [Pixel-Fillrate] “填充率“以每秒钟填充的像素点为单位,“三角形(多边形)生成速度“则表示每秒钟三角形(多边形)生成个数.现在的3D显卡的性能也主要看着两项指标,这两项指标的数值越大, ...