log4j学习_仅供自己参考

来源:互联网 发布:郑州seo顾问 编辑:程序博客网 时间:2024/05/19 23:59

1. 
  首先确定要使用log4j,然后下载log4j的jar文件,这里用的是log4j-1.2.9.jar,并且将jar文件放到
项目的lib目录下,这个很重要,

2. 
  新建log4j的配置文件log4j.properties,放到/WEB-INF/目录下

3.
  配置log4j.properties文件,详细的配置信息和方法可以在google中找,不再赘述

这里是将日志输出到控制台和文件,配置如下:

log4j.rootLogger=INFO,toConsole,toFile

log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
log4j.appender.toConsole.Threshold=DEBUG
log4j.appender.toConsole.Target=System.out
log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.toConsole.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}]%n[%l] [%p]%n%m%n%n
#[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#[%d{yyyy-MM-dd HH:mm:ss}]%n[%l] [%p]%n%m%n%n

log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.toFile.File=D://Tomcat 5.0//webapps//MyExample//logs//file.log
log4j.appender.toFile.MaxFileSize=100kb
log4j.appender.toFile.MaxBackupIndex=1
log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
log4j.appender.toFile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}]%n[%l] [%p]%n%m%n%n
#%p %t %c - %m%n

4.
  配置web.xml文件

在web.xml文件中加入如下代码:

  <servlet>
   <servlet-name>log4j</servlet-name>
   <servlet-class>com.servletLog4j.InitLog4jServlet</servlet-class>
   <init-param>
    <param-name>log4jFile</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
  </servlet>

在配置web.xml文件的时候,要注意的是不要写成<servlet-mapping/>的方式如:
  <servlet>
   <servlet-name>log4j</servlet-name>
   <servlet-class>com.servletLog4j.InitLog4jServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>log4j</servlet-name>
   <url-pattern>/WEB-INF/log4j.properties</url-pattern>
  </servlet-mapping>
这样后面写的servlet是找不到log4j.properties文件的,我在这里绕了好久

5.
  写启动log4j的servlet文件

可以去掉其中的输出信息

public class InitLog4jServlet extends HttpServlet{
 
 private static final long serialVersionUID = -1815935507494861825L;
 
 public void init(){
  String path= getServletContext().getRealPath("/");
  String pre= getServletContext().getRealPath("");
  String file= this.getInitParameter("log4jFile");
//  System.setProperty("webapphome",pre);
  System.out.println(path);
  System.out.println(pre);
  if(file != null){
   PropertyConfigurator.configure(path+file);
  }
  System.out.println(file);
 }
 public void doGet(HttpServletRequest request, HttpServletResponse response){
  
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response){
  
 }
 public void destroy(){
  
 }
}

6.
  使用log4j

经过上面的操作后就可以用它了

private static Logger log= Logger.getLogger(ExampleAction.class);

public ActionForward execute(//...略){
 log.info("you can output something here.");
 log.error("here too");
 log.debug("");
 log.warn("");
}

7.
  注意的地方

在输出信息的地方最好是使用
if(log.isDebugEnabled()){
 log.debug("...");
}
因为直接输出log.debug("...")会影响系统性能的

如果是在main方法中输出日志,可以如下使用:

PropertyConfigurator.configure("F://workspace//MyExample//WebRoot//WEB-INF//log4j.properties");//找到log4j的配置文件
Logger log= Logger.getLogger("TestConnect");
log.debug("bug");
log.error("ce shi");
log.info("test");
不用配置什么servlet,web.xml