log4j日志工具包

log4j是用java写的优秀日志工具包。

学习时的参考网址:http://blog.csdn.net/nengyu/article/details/6804887

jar包的下载地址

测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.dingsheng.test;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
//注意此处引用包的名称,不是util下的,而是apach下的
public class TestLog {
public static void main(String[] args) {
Logger logger = Logger.getLogger(TestLog.class);
PropertyConfigurator.configure("src/log4j.properties");
logger.debug("debug");
logger.info("info");
logger.error("error");
}
}

log4j的配置文件log4j.properties内容如下:

1
2
3
4
log4j.rootLogger = DEBUG, A1
log4j.appender.A1 = org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern = %-4r [%t] %-5p %c %x - %m%n

相关说明:

定义了一个根记录器及其级别: DEBUG<INFO<WARN<ERROR<FATAL。

定义根记录器的格式为:

1
log4j.rootLogger = [ level ], appendName1, appendName2, …appendNameN

定义非根记录器的格式:

1
log4j.logger.loggerName1 =  level ],appendName1,appendName2,...appendNameN

同一个记录器可有多个输出端。

定义appender的输出目的地,格式:

1
log4j.appneder.appendName =  目的地格式

主要有以下几种常用的输出目的地:

1
2
3
4
5
6
org.apache.log4j.ConsoleAppender                将日志信息输出到控制台
org.apache.log4j.FileAppender 将日志信息输出到一个文件
org.apache.log4j.DailyRollingFileAppender 将日志信息每天输出到一个新的文件
org.apache.log4jRollingFileAppender 将日志信息输出到一个文件,能够指定文件的大小,当文件大小到达指定尺寸时会自动把文件改名
org.apache.log4j.WriteAppender 将日志信息以流的形式发送到任意指定的地方
org.apache.log4j.jdbc.JDBCAppender 将日志信息通过JDBC输出到数据库中

定义所选目的地的相关参数,格式:

1
log4j.appender.appendName.optionName = value

输出格式(布局)layout,格式:

1
log4j.appender.appendName.layout = 布局

主要有以下几种布局模式:

1
2
3
org.apache.log4j.HTMLLayout                       以HTML表格形式布局
org.apache.log4j.PatternLayout 可以灵活指定布局模式
org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串

定义与所选布局模式相关的设置信息,格式:

1
log4j.appender.appendName.layout.optionName = value

其中有一个optionName = ConversionPattern,这个ConversionPattern有许多个参数:

1
2
3
4
5
6
7
8
9
%c              输出日志信息所属类的全名
%d 输出日志时间点的日期或时间,默认格式是ISO8601,也可以在其后指定格式,比如: %d{yyy-MM-dd HH:mm:ss},输出类似2016-07-06 17:15:30
%f 输出日志信息所属类的类名
%l 输出日志时间的发生位置,即输出日志信息的语句处于它所在类的第几行
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,windows平台为“/r/n”,Unix平台为"/n"
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL.如果是调用debug(),则输出debug
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生改日志时间的线程名

log4j.properties中更详细的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#定义了两个输出端
log4j.rootLogger = DEBUG, A1, A2
#定义A1输出到控制器
log4j.appender.A1 = org.apache.log4j.ConsoleAppender
#定义A1的布局模式为PatternLayout
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
#定义A1的输出格式
log4j.appender.A1.layout.ConversionPattern = %-4r [%t] %-5p %c - %m%n
#定义A2输出到文件
log4j.appender.A2 = org.apache.log4j.RollingFileAppender
#定义A2要输出到哪一个文件
log4j.appender.A2.File = F://example3.log
#定义A2的输出文件的最大长度
log4j.appender.A2.MaxFileSize = 1KB
#定义A2的备份文件数
log4j.appender.A2.MaxBackupIndex = 3
#定义A2的布局模式为PatternLayout
log4j.appender.A2.layout = org.apache.log4j.PatternLayout
#定义A2的输出格式
log4j.appender.A2.layout.ConversionPattern = %d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n

#定义A3输出到数据库
log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.A3.BufferSize = 40
log4j.appender.A3.Driver = com.mircsoft.jdbc.sqlserver.SQLServerDriver
log4j.appender.A3.URL = jdbc:mircsoft:sqlserver://127.0.0.1:1433;DatabaseName=aa
log4j.appender.A3.User = sa
log4j.appender.A3.password =
log4j.appender.A3.layout = org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j