log4j api包是根据apache软件许可证分发的。
最新的log4j版本,包括全源代码,类文件和文档可以在http://logging.apache.org/log4j/找到。
我们可以从上面的链接下载apache-log4j-x.x.x.tar.gz或zip文件。
我们可以使用log4j将信息记录到各种目的地,例如发送电子邮件,数据库或文件。
有一个我们需要放到classpath的库的列表,以便log4j可以拿起它并使用它。
例如,当从log4j发出电子邮件时,我们需要电子邮件库jar文件。
库是可选的,并且取决于我们将要与log4j框架一起使用的功能。
javamail api(mail.jar): 从https://glassfish.dev.java.net/javaee5/mail/用于基于电子邮件的日志记录。
javabeans activation framework(activation.jar): 来自http://java.sun.com/products/javabeans/jaf/index.jsp。
java message service: 用于jms和jndi。
xml parser(xerces.jar): 来自http://xerces.apache.org/xerces-j/install.html。
首先,使用以下maven命令创建一个空的maven项目。
c:\mvn_test>mvn archetype:generate -dgroupid=com.w3cschool.ide -dartifactid=mytest -darchetypeartifactid=maven-archetype-quickstart -dinteractivemode=false
然后,转到项目文件夹并找到pom.xml,添加以下依赖关系。
<dependency> <groupid>log4j</groupid> <artifactid>log4j</artifactid> <version>1.2.17</version> </dependency>
之后,将以下代码添加到在resources文件夹下创建的log4j.properties。
mytest | +-src | +-main | +-java | | | +-com | | | +-w3cschool | | | +-ide | +-resources | +- log4j.properties
如上面的文件夹结构所示,资源位于java文件夹的保存级别。
对于java web应用程序,将log4j.properties文件存储在web-inf/classes目录下 将以下配置保存到log4j.properties文件中。# root logger option log4j.rootlogger=debug, stdout, file # redirect log messages to console 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=%d{yyyy-mm-dd hh:mm:ss} %-5p %c{1}:%l - %m%n # redirect log messages to a log file, support file rolling. log4j.appender.file=org.apache.log4j.rollingfileappender log4j.appender.file.file=c:\\log4j.log log4j.appender.file.maxfilesize=5mb log4j.appender.file.maxbackupindex=10 log4j.appender.file.layout=org.apache.log4j.patternlayout log4j.appender.file.layout.conversionpattern=%d{yyyy-mm-dd hh:mm:ss} %-5p %c{1}:%l - %m%n
最后一个%m%n
配置log4j以添加换行符。
%l设置从记录请求的行号。
%c{1}引用通过 getlogger()
设置的日志记录名称。
%-5p设置日志记录优先级,如debug或error。
最后添加以下代码app.java并运行应用程序。
package com.w3cschool.ide; import org.apache.log4j.logger; public class app{ final static logger logger = logger.getlogger(app.class); public static void main(string[] args) { app obj = new app(); obj.runme("w3cschool"); } private void runme(string parameter){ if(logger.isdebugenabled()){ logger.debug("this is debug : " + parameter); } if(logger.isinfoenabled()){ logger.info("this is info : " + parameter); } logger.warn("this is warn : " + parameter); logger.error("this is error : " + parameter); logger.fatal("this is fatal : " + parameter); } }
以下代码显示如何记录异常。
import org.apache.log4j.logger; public class app { final static logger logger = logger.getlogger(app.class); public static void main(string[] args) { app obj = new app(); try { obj.divide(); } catch (arithmeticexception ex) { logger.error("sorry, something wrong!", ex); } } private void divide() { int i = 10 / 0; } }