Java web中使用Log4j记录日志信息
2016-03-20 14:58
661 查看
最近想记录一下Log4j的使用,抽了点时间通过收集网上的资料整理了这份博客,希望给需要用Log4j记录日志的朋友一点帮助,若有不对的地方,望指正。 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件GUI组建,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志的信息级别,我们能够更加细致地控制日志的生成过程。(摘自百度百科) Apache的Log4j主要包括三个部分。在应用中要使用Log4j来记录日志,首先要知道这三个部分的作用,才知道如何去配置Log4j来记录日志。这三部分分别是:日志信息的优先级、日志信息的输入目的地和日志信息的输出格式。下面就这三部分进行一个介绍,然后在最后给出一些例子讲解如何配置Log4j。 一、日志级别 日志级别,是告诉Log4j什么样级别的日志信息才被记录,主要包括以下几个级别(级别依次由低到高): ALL:各级别包括自定义的级别; DEBUG:一般用在细粒度上,对调试应用程序非常有帮助; INFO:一般用在细粒度上,强调应用程序的运行全程; WARN:指定具有潜在危害的情况; ERROR:指定虽然发生错误事件,但任然不影响系统运行; FATAL:指定非常严重的错误事件,可能会导致应用程序终止; OFF:最高的级别,指定关闭日志记录所有功能。 二、日志信息输出目的地 日志信息输出目的地,指定Log4j记录的日志信息输出到哪里。在日常的开发中,比较常用的有以下几种: 1、org.apache.log4j.ConsoleAppender(控制台): 可配置属性: Threshold:指定日志消息输出的最低级别 InnediateFlush:日志消息是否立即输出,默认为true Target:指定由谁输出,默认是System.out 2、org.apache.log4j.FileAppender(文件): 可配置属性: Threshold:指定日志消息输出的最低级别 encoding:可以指定任何字符编码,默认是特定平台的编码方案 InnediateFlush:日志消息是否立即输出,默认为true File:指定日志输出到那个文件 Append:指定日志信息是否是追加方式输出到文件中,默认为true 3、org.apache.log4j.RollingFileAppender(指定日志文件到达一定的大小之后产生一个新文件): 该配置继承与FileAppender,除了包括FileAppender可配置属性外,还包括以下属性: MaxFileSize:指定日志文件到达一定的大小后,新产生一个文件,可以指定单位有KB/MB/GB MaxBackupIndex:指定可以新产生多少个文件 4、org.appche.log4j.DailyRollingFileAppender(每天产生一个日志文件): 该配置继承与FileAppender,除了包括FileAppender可配置属性外,还包括以下属性: DatePattern:指定在什么时候产生一个新的日志文件,默认是0点,可指定的格式: '.'yyyy-MM:每个月的结束和下个月初 '.'yyyy-MM-dd:默认值,每天0点 '.'yyyy-MM-dd-a:每天0点和12点 '.'yyyy-MM-dd-HH:每小时 '.'yyyy-MM-dd-HH-mm:每分钟 '.'yyyy-ww:每个星期的第一天 5、org.apache.log4j.jdbc.JDBCAppender(记录日志信息到数据库): 可配置属性: bufferSize:设置缓冲区的大小,默认为1 driver:设置数据库驱动 layout:设置日志使用的布局,默认是org.apache.log4j.PatternLayout sql:指定语句在每次记录事件发生的时间执行,可以是insert/update/delete url:设置jdbc url user:设置数据库用户名 password:数据库密码 三、日志信息输出格式 可配置的输出格式有以下几种: 1、org.apache.log4j.HTMLLayout(以HTML表格形式布局) 2、org.apache.log4j.PatternLayout(可以灵活指定布局格式) 3、org.apache.log4j.SimpleLayout(包含日志的级别和信息字符串) 4、org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息) 通过以上的可配置布局,还需要指定org.appender.appendName.layout.ConversionPattern属性的具体格式,这里以一个例子说明: log4j.appender.R.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ss} %c %m%n 具体配置项如下说明: -X:日志信息输入左对齐 %p:输出日志的级别 %d:指定日期的输出格式 %r:输出自应用启动到输出该log信息耗费的毫秒数 %c:输出日志信息所属的类目,通常就是类全名 %t:输出产生该日志时间的线程名 %l:输出日志事件的发生位置,包括类名、发生的线程以及在代码中的行数 %x:输出和当前线程相关联的嵌套诊断环境 %%:输出一个“%” %F:输出日志消息产生是所在的文件名称 %L:输出代码中的行号 %m:输出代码中指定的日志信息 %n:输出一个回车换行符 介绍完Log4j的三个部分的常用配置,下面结合例子来展示一下真实环境中的配置例子: 1、下载Log4j,下载完后把jar包拷到lib目录下 下载地址:http://logging.apache.org/log4j/1.2/download.html 2、编写配置文件,并把文件加入到classpath中:
3、在web.xml中配置启动服务器时启动Log4j
4、在代码中加载Log4j配置信息:
通过以上4个步骤,那么Log4j的环境就算搭建完成了。由于是基于java web搭建的Log4j,所以需要启动服务器来进行测试。这里我以执行一个sql为例子,下图是在某一段代码中使用了Log4j记录日志:
控制台输入日志:
日志文件输出:
相关文章推荐
- Apache Log4j 2.0-rc1 发布
- Awstats处理多apache日志
- 典型入侵日志分析
- MS SQL Server数据库清理错误日志的方法
- 对MySQL日志操作的一些基本命令总结
- 简介操作MySQL日志的一些方法
- MySQL的日志基础知识及基本操作学习教程
- MSSQL 2005/2008 日志压缩清理方法小结
- SQL Server误区30日谈 第19天 Truncate表的操作不会被记录到日志
- C#3.0使用EventLog类写Windows事件日志的方法
- ORA-00392ORA-00312日志正在清除故障
- MySQL中查询日志与慢查询日志的基本学习教程
- mysql binlog二进制日志详解
- C#实现线程安全的简易日志记录方法
- C#实现将程序运行信息写入日志的方法
- ORACLE DATAGUARD中手工处理日志v$archive_GAP的方法
- 某个aspx页面突然死了连日志也没有的解决方法
- 如何查看数据库alert日志文件
- 解析php如何将日志写进syslog
- 日志中的秘密 Windows登录类型知多少?