一、Log4j 日志
Log4j是Apache的一个开源代码项目,通过使用Log4j,我们可以把日志信息输送到控制台、文件等中。
Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。
日志信息的优先级从高—>低:error、warn、info、debug,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;输出格式控制了日志信息的显示内容。
二、log4j使用
1、新建一个web project项目,导入包log4j-1.2.16.jar到web-inf\lib下
2、src下配置log4j.properties文件或者log4j.xml文件 (其实也可以完全不使用配置文件,而是在代码中配置Log4j环境。但是,使用配置文件将使应用程序更加灵活。)
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties格式的文件。
Properties文件配置:
log4j.rootLogger=debug,stdout,file
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-ddHH:mm:ss}]%p %rs %l - %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${webappHome}/logs/news_1.0.log
log4j.appender.file.MaxFileSize=100KB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.DatePattern='_'yyyyMMdd'.log'
log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}]%p [%t] (%F:%L) - %m%n
或者使用
XML文件配置:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM"./log4j.dtd" >
<log4j:configuration>
<appender name="stdout"class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="debug" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%5p %c{1}:%L -%m%n" />
</layout>
</appender>
<root>
<level value="debug" />
<appender-ref ref="stdout" />
</root>
</log4j:configuration>
3.编写一个Servelet读取配置文件log4j.properties信息
如:Log4jInit.java
package com.cn;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInit extends HttpServlet{
public void init() throws ServletException{
Stringprefix=getServletContext().getRealPath("/");//获取当前web应用的根目录
System.out.println(prefix);
Stringfile=getInitParameter("profile");//从web.xml中读取初始化参数中的log4j配置文件的位置
StringwebappPath=getServletContext().getRealPath("");
System.setProperty("webappHome",webappPath);
if(file!=null){
PropertyConfigurator.configure(prefix+file);//读取Log4j配置文件,配置Log4j环境
}
}
}
4.配置web.xml文件,配置Log4jInit.java的servlet
<servlet>
<servlet-name>Log4jInit</servlet-name>
<servlet-class>com.cn.Log4jInit</servlet-class>
<init-param>
<param-name>profile</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Log4jInit</servlet-name>
<url-pattern>/Log4jInit</url-pattern>
</servlet-mapping>
5、在index.jsp中加入如下代码
import org.apache.log4j.Logger;
importorg.apache.log4j.PropertyConfigurator;
<%
Loggerlog = Logger.getLogger(this.getClass());
//实例Log4j,this.getClass()代表当前你自己的类,在当前类中写入日志
log.debug("hxy");
%>
6、运行,可以看到控制台会打印出相应的日志信息“hxy”。