Log4j教程 - Log4j安装
Log4j API包是根据Apache软件许可证分发的。
最新的log4j版本,包括全源代码,类文件和文档可以在http://logging.apache.org/log4j/找到。
我们可以从上面的链接下载apache-log4j-x.x.x.tar.gz或zip文件。
注意:log4j以下版本存在0day漏洞,尽量避免使用这些版本!!!
Apache log4j2 2.0 - 2.14.1
支持库
我们可以使用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和Log4j
首先,使用以下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;
}
}