1. 导入log4j.jar的包。
2. 在src文件夹下,配置log4j.properties的配置文件。
如:
log4j.rootLogger=INFO, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
3. 在类中使用:
//导入类。 import org.apache.log4j.Logger; //声明 private static Logger logger = Logger.getLogger(DBUtil.class); //使用 logger.error("Error!"); logger.info("Info!");
也可以配合log4j使用commons-logging.jar,用法如下:
//导入 import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; //声明 private static Log log = LogFactory.getLog(DBUtil.class); //使用 log.error("Error!");
⑴ Commons的Logging首先在CLASSPATH中寻找一个commons-logging.properties文件。这个属性文件至少必须定义org.apache.commons.logging.Log属性,它的值应该是上述任意Log接口实现的完整限定名称。
⑵ 如果上面的步骤失败,Commons的Logging接着检查系统属性org.apache.commons.logging.Log。
⑶ 如果找不到org.apache.commons.logging.Log系统属性,Logging接着在CLASSPATH中寻找log4j的类。如果找到了,Logging就假定应用要使用的是log4j。不过这时log4j本身的属性仍要通过log4j.properties文件正确配置。
⑷ 如果上述查找均不能找到适当的Logging API,但应用程序正运行在JRE 1.4或更高版本上,则默认使用JRE 1.4的日志记录功能。
⑸ 最后,如果上述操作都失败,则应用将使用内建的SimpleLog。SimpleLog把所有日志信息直接输出到System.err。
log4j.properties的配置方法如下:
新建一个配置文件log4j.properties:
log4j.rootLogger=WARN, stdout, Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.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 formatlog4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=example.loglog4j.appender.R.MaxFileSize=100KB# Keep one backup filelog4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.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=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1} - %m%nPS: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 输出产生该日志事件的线程名
引用: