log4j java project_Log4j日志在java项目中的使用(附工程源码)

一、关于Log4j日志

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。

此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。

二、Log4j使用前必须要了解的一些概念

2.1、日志信息的优先级

日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。而且在企业中一般也只使用着四种。下面是各个级别的极介绍:

OFF 最高等级,用于关闭所有日志记录。

FATAL 指出每个严重的错误事件将会导致应用程序的退出。

ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。

WARN 表明会出现潜在的错误情形。

INFO 一般和在粗粒度级别上,强调应用程序的运行全程。

DEBUG 一般用于细粒度级别上,对调试应用程序非常有帮助。

ALL 最低等级,用于打开所有日志记录。

2.2、日志信息的输出目的地

日志信息的输出目的地指定了日志将打印到控制台还是文件中。参考如下配置文件log4j.properties,其既配置了输出到控制台,也配置了输出到日志文件中:

### 设置###

log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target = System.out

log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=D://logs/debug.log ###

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender

log4j.appender.D.File = D://logs/debug.log

log4j.appender.D.Append = true

log4j.appender.D.Threshold = DEBUG

log4j.appender.D.layout = org.apache.log4j.PatternLayout

log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

### 输出ERROR 级别以上的日志到=D://logs/error.log ###

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

log4j.appender.E.File =D://logs/error.log

log4j.appender.E.Append = true

log4j.appender.E.Threshold = ERROR

log4j.appender.E.layout = org.apache.log4j.PatternLayout

log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

其中log4j.appender.D.Threshold是一个过滤器,配置了表示输出该级别及其以上的日志,

另外log4j.appender.D.Append = true一般输出到文件的都会配置,而且配置成true,true:表示添加,false:表示覆盖。

2.3、配置日志信息的格式

2.2中的log4j.properties配置文件中,应该会看log4j.appender.*.layout,这表示输出的日志格式配置。

log4j.appender.*.layout值的选择有以下几种:

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

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

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

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

一般我们都采用第二种org.apache.log4j.PatternLayout,自定义格式,如2.2中的log4j.properties配置文件中,这种格式需要我们自定义,这里小宝鸽如下定义:

log4j.appender.*.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

其中含义介绍:

%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在java中的使用

本项目使用的环境:eclipse + maven 。

3.1、新建maven项目

(Packagding 选war,因为后面会讲到其在web项目中的使用,同样用这个新建的项目),如果不知道如何新建maven项目的,可以参考博主另外一篇文章:

http://blog.csdn.net/wushiwude/article/details/54312279

3.2、在pom.xml添加Log4j的jar包依赖:

4.0.0

com.luo

log4j

0.0.1-SNAPSHOT

war

1.6.6

1.2.12

log4j

log4j

${log4j.version}

org.slf4j

slf4j-api

${slf4j.version}

org.slf4j

slf4j-log4j12

${slf4j.version}

3.3、添加配置文件和测试类

f862df80fa675758cbb658a2dcd8cda7.png

log4j.properties内容如下:

### 设置###

log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target = System.out

log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=D://logs/debug.log ###

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender

log4j.appender.D.File = D://logs/debug.log

log4j.appender.D.Append = true

log4j.appender.D.Threshold = DEBUG

log4j.appender.D.layout = org.apache.log4j.PatternLayout

log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

### 输出ERROR 级别以上的日志到=D://logs/error.log ###

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

log4j.appender.E.File =D://logs/error.log

log4j.appender.E.Append = true

log4j.appender.E.Threshold = ERROR

log4j.appender.E.layout = org.apache.log4j.PatternLayout

log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

LogTest.java内容如下:

packagecom.luo.log;importorg.apache.log4j.Logger;public classLogTest {private static Logger logger = Logger.getLogger(LogTest.class);public static voidmain(String[] args) {//记录debug级别的信息

logger.debug("This is debug message.");//记录info级别的信息

logger.info("This is info message.");//记录error级别的信息

logger.error("This is error message.");

}

}

3.4、运行结果

运行LogTest.java,会看到控制台如下结果:

6b8762052bb58c1cd450c6231238ee36.png

另外,D:\logs下也会多了两个log文件,且内容如下图:

211a47678b1cec09f3aa1c96e1045182.png

13894e3a8e2e5cee8903df11c960caa1.png

6da4c05b9a429378c1eb5063d055ca0f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值