log4j

Log4j的配置文件如下:

#应用于控制台

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.Threshold=DEBUG

log4j.appender.CONSOLE.Target=System.out

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

log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyyMMdd-HH:mm:ss}%t%c%m%n

#应用于文件

log4j.appender.FILE=org.apache.log4j.FileAppender

log4j.appender.FILE.File=d:\\file.log

log4j.appender.FILE.Append=false

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

log4j.appender.FILE.layout.ConversionPattern=%d{yyyyMMdd-HH:mm:ss}%t%c%m%n

#应用于按日期生成文件

log4j.appender.DLOGFILE=org.apache.log4j.DailyRollingFileAppender

log4j.appender.DLOGFILE.File=d:\\test.log

log4j.appender.DLOGFILE.Threshold=INFO

log4j.appender.DLOGFILE.DatePattern='.'yyyy-MM-dd

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

log4j.appender.DLOGFILE.layout.ConversionPattern=%d{yyyyMMdd-HH:mm:ss}%t%c%m%n

#应用于文件回滚

log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender

log4j.appender.ROLLING_FILE.Threshold=INFO

log4j.appender.ROLLING_FILE.File=d:\\rolling.log

log4j.appender.ROLLING_FILE.Append=true

log4j.appender.ROLLING_FILE.MaxFileSize=1KB

log4j.appender.ROLLING_FILE.MaxBackupIndex=1

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

log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d{yyyyMMdd-HH:mm:ss}%t%c%m%n

#数据库输出

log4j.appender.MYSQL_LOG=org.apache.log4j.jdbc.JDBCAppender

log4j.appender.MYSQL_LOG.driver=com.mysql.jdbc.Driver

log4j.appender.MYSQL_LOG.URL=jdbc:mysql://127.0.0.1:3306/txl

log4j.appender.MYSQL_LOG.Threshold=ERROR

log4j.appender.MYSQL_LOG.user=root

log4j.appender.MYSQL_LOG.password=

log4j.appender.MYSQL_LOG.sql=insertintolog_monitor(level,category,thread,time,location,note)values('%p','%c','%t','%d{yyyy-MM-ddHH:mm:ss:SSS}','%l','%m')

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

#自定义Appender,输出到任意地方

如果使用数据库,请添加数据库驱动

CREATETABLE`log_icecoldmonitor`(

`Id`int(11)NOTNULLAUTO_INCREMENT,

`level`varchar(255)NOTNULLDEFAULT''COMMENT'优先级',

`category`varchar(255)NOTNULLDEFAULT''COMMENT'类目',

`thread`varchar(255)NOTNULLDEFAULT''COMMENT'进程',

`time`varchar(30)NOTNULLDEFAULT''COMMENT'时间',

`location`varchar(255)NOTNULLDEFAULT''COMMENT'位置',

`note`textCOMMENT'日志信息',

PRIMARYKEY(`Id`)

)

Log4j输出的信息分如下几类:ALL,DEBUG,INFO,ERROR,FATAL,级别从低到高,输出的内容是从多到少.从字面意思即可看出大概,ALL指输出所有信息;DEBUG指调试信息;INFO指一般信息;ERROR指错误信息;FATAL指致命的错误信息。

输出的信息级别和内容我们可以在程序里面设置,但缺点就不够灵活,并且无法在程序运行期间进行参数调整。通过XML或Property配置文件可以在外部控制Logger的输出,原理都一样的,只是表现形式不一样,看个人的习惯了。下面主要讲一下如何使用Property文件来灵活配置Log4j的输出。

在Log4j中你可以让信息输出到控制台(Console)、文件、远程数据数等中的其中一个或多个当中。

首先我们要先声明信息输出的级别,并且为了能把信息输出到指定的目的地,我们要指定输出方案,如下所示:

log4j.rootLogger=DEBUG,A1,A4

DEBUG为输出信息的级别,A1,A4分别为输出方案的名称,下面我们来定义方案的具体参数。

指定该输出方案的信息输出目的地为控制台:

log4j.appender.A1=org.apache.log4j.ConsoleAppender

设定输出的布局为模式布局:

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

指定模式的具体参数:

log4j.appender.A1.layout.ConversionPattern=[%d{HH:mm:ss}][%t]%-5p-%m%n

每个参数前要加%来说明,其中:

%d:日期(date),如:yyyy-MM-dd,yyyy-MM-ddHH:mm:ss等

%t:线程名称(Thread)

%-5p:信息优先级(Priority),宽度为5,左对齐。如DEBUG,FATAL等

%m:输出信息(Message)

%n:回车换行

还有其它几个象%c,%C,%F等

上面的方案A1指的是把信息输出到控制台,并且输出的格式按指定的格式输出。

我们还可以指定把信息输出到文件当中,如下为普通文件输出方案:

log4j.appender.A2=org.apache.log4j.RollingFileAppender

log4j.appender.A2.File=logs\\test.log

log4j.appender.A2.MaxFileSize=1MB

log4j.appender.A2.MaxBackupIndex=3

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

log4j.appender.A2.layout.ConversionPattern=[%d]%-4r[%t]%-5p%c%x-%m%n

输出指定的文件test.log当中,并且指定该文件最大不超过1MB,超过之后将清除后再写入。当然也可以直接用FileAppender,不进行Rolling,那么所以的日志信息都将追加到原信息的后面。MaxBackupIndex指的是最大备份数目。以上面文件为例,当test.log到达1MB,则它直接被修改成test.log.1,如果这个文件已存在,则修改为test.log.2,直到MaxBackupIndex。新的日志信息,将重新生成文件test.log。当下一次达到1MB时,此时test.log.1,test.log.2,test.log.3都已存在,则直接把test.log.3删除,把test.log修改成test.log.3。

把信息输出到远程数据库当中:

#定义A3输出到数据库

log4j.appender.A3=org.apache.log4j.jdbc.JDBCAppender

log4j.appender.A3.BufferSize=40

log4j.appender.A3.Driver=sun.jdbc.odbc.JdbcOdbcDriver

log4j.appender.A3.URL=jdbc:ODBC:driver={MicrosoftAccessDriver(*.mdb)};DBQ=MobileDB.mdb

log4j.appender.A3.User=

log4j.appender.A3.Password=

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

log4j.appender.A3.layout.ConversionPattern=INSERTINTOlog4j(createDate,thread,priority,category,message)values('%d','%t','%-5p','%c','%m')

指定输出方案为JDBCAppender,即能过JDBC把日志自动写入到远程数据库当中。BufferSize指定缓冲区的大小,当输出内容达到缓冲区的大小时,就把数据写入数据库一次。下面的参数依次为指暄数据库驱动名称、数据库URL地址、数据库登录用户名和密码,模式布局和Select语句。

我们也可以把信息输出到HTML文件当中,并且是按时间段自动生成文件,比如,每隔一个小时或一天、半天生成一个HTML文件:

log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender

log4j.appender.A4.File=logs\\log.html

log4j.appender.A4.DatePattern='.'yyyy-MM-dd-HH'.html'

log4j.appender.A4.layout=org.apache.log4j.HTMLLayout

第一个参数为指定输出方案为按日期滚动的文件方案。第二个参数指定文件名,第三个指定日期模式,最后一个指定布局为HTML布局。上面的设置会每隔一个小时产生一个HTML文件名,文件名为:log.html.2006-03-24-08.html的样子。

完整的配置文件log4j.properties如下:

log4j.rootLogger=DEBUG,A1,A4

log4j.appender.A1=org.apache.log4j.ConsoleAppender

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

log4j.appender.A1.layout.ConversionPattern=[%d{HH:mm:ss}][%t]%-5p-%m%n

log4j.appender.A2=org.apache.log4j.RollingFileAppender

log4j.appender.A2.File=logs\\test.log

log4j.appender.A2.MaxFileSize=1KB

log4j.appender.A2.MaxBackupIndex=3

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

log4j.appender.A2.layout.ConversionPattern=[%d]%-4r[%t]%-5p%c%x-%m%n

#11区定义A3输出到数据库

log4j.appender.A3=org.apache.log4j.jdbc.JDBCAppender

log4j.appender.A3.BufferSize=40

log4j.appender.A3.Driver=sun.jdbc.odbc.JdbcOdbcDriver

log4j.appender.A3.URL=jdbc:ODBC:driver={MicrosoftAccessDriver(*.mdb)};DBQ=MobileDB.mdb

log4j.appender.A3.User=

log4j.appender.A3.Password=

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

log4j.appender.A3.layout.ConversionPattern=INSERTINTOlog4j(createDate,thread,priority,category,message)values('%d','%t','%-5p','%c','%m')

log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender

log4j.appender.A4.File=logs\\log.html

log4j.appender.A4.DatePattern='.'yyyy-MM-dd-HH'.html'

log4j.appender.A4.layout=org.apache.log4j.HTMLLayout

相关推荐