天天看点

log4j与log4j.properties的配置

摘要:   

  一、配置步骤

1、  在应用程序中使用log4j

2、  把log4j-*.*jar放入classpath变量中

3、  新建一个配置文件log4j.properties,放于bin文件下

二、配置log4j.properties

新建一个配置文件log4j.properties:

log4j.rootlogger=warn, stdout, r

log4j.appender.stdout=org.apache.log4j.consoleappender

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

# pattern to output the caller's file name and line number.

#log4j.appender.stdout.layout.conversionpattern=%5p [%t] (%f:%l) - %m%n

# print the date in iso 8601 format

log4j.appender.stdout.layout.conversionpattern=%d [%t] %-5p %c - %m%n

log4j.appender.r=org.apache.log4j.rollingfileappender

log4j.appender.r.file=example.log

log4j.appender.r.maxfilesize=100kb

# keep one backup file

log4j.appender.r.maxbackupindex=1

log4j.appender.r.layout=org.apache.log4j.patternlayout

log4j.appender.r.layout.conversionpattern=%p %t %c - %m%n

# print only messages of level warn or above in the package com.foo.

log4j.logger.com.foo=warn

编译并运行testlog4j会在目录下生成一个example.log的文件,屏幕也会输出信息,这证明已经你已经成功了第一步。

下面解释下这些配置文件

log4j.rootlogger = [ level ], appendname1, appendname2, …appendnamen。同一个记录器可有多个输出端。

ps:level的级别(此级别可以自定义,系统默认提供了以下级别)

debug//调试信息

info//一般信息

warn//警告信息

error//错误信息

fatal//致命错误信息

上面列出的就是所谓log4j的输出级别,log4j建议只使用4个级别,它们从上到下分别为error、warn、info、debug,假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。

log4j.appender.appendername = fully.qualified.name.of.appender.class。log4j提供了以下几种常用的输出目的地:

org.apache.log4j.consoleappender,将日志信息输出到控制台

org.apache.log4j.fileappender,将日志信息输出到一个文件

org.apache.log4j.dailyrollingfileappender,将日志信息输出到一个,并且每天输出到一个新的日志文件

org.apache.log4j.rollingfileappender,将日志信息输出到一个文件,通过指定文件的的尺寸,当文件大小到达指定尺寸的时候会自动把文件改名,如名为example.log的文件会改名为 example.log.1,同时产生一个新的example.log文件。如果新的文件再次达到指定尺寸,又会自动把文件改名为 example.log.2,同时产生一个example.log文件。依此类推,直到example.log. maxbackupindex, maxbackupindex的值可在配置文件中定义。

org.apache.log4j.writerappender,将日志信息以流格式发送到任意指定的地方。

org.apache.log4j.jdbc.jdbcappender,通过jdbc把日志信息输出到数据库中。

log4j提供了一下几种布局:

org.apache.log4j.htmllayout,以html表格形式布局

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

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

定义一个patternlayout布局的语句为:

log4j.appender.stdout.layout.conversionpattern=%d{absolute} %5p %c{1} - %m%n

ps:conversionpattern参数的格式含义

格式名 含义

%c 输出日志信息所属的类的全名

%d 输出日志时间点的日期或时间,默认格式为iso8601,也可以在其后指定格式,比如:%d{yyy-mm-dd hh:mm:ss },输出类似:2002-10-18- 22:10:28

%f 输出日志信息所属的类的类名

%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行

%m 输出代码中指定的信息,如log(message)中的message

%n 输出一个回车换行符,windows平台为“\r\n”,unix平台为“\n”

%p 输出优先级,即debug,info,warn,error,fatal。如果是调用debug()输出的,则为debug,依此类推

%r 输出自应用启动到输出该日志信息所耗费的毫秒数

%t 输出产生该日志事件的线程名

三、在代码中使用log4j

我们在需要输出日志信息的类中做如下的三个工作:

1、导入所有需的log4j类:

import org.apache.log4j.logger;

import org.apache.log4j.propertyconfigurator;

2、在自己的类中定义一个私有静态类成员:

static logger logger = logger.getlogger(testlog4j.class)

3、使用类的成员方法输出日志信息:

   if (log.isdebugenabled())

     {

        log.debug("111");

     }

   if (log.isinfoenabled())

    {

       log.info("222");

    }

   if (log.iswarnenabled())

       log.warn("333");

   if (log.iserrorenabled())

      log.error("444");

   if (log.isfatalenabled())

      log.fatal("555")

    }  

特别说明:尊重作者的劳动成果,转载请注明出处哦~~~

http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt233