log4j的使用

来源:互联网 发布:手机测量仪软件 编辑:程序博客网 时间:2024/06/03 09:09

    相信大家都在测试程序的时候后遇到遇到很多麻烦,而且每次的错误信息只在控制台出现,下一次测试的时候就会被新的信息给覆盖了,那么我们想一个办法让错误信息输出到一个文件中就好了,就算再调试的时候错误信息也不会丢失。还有一点就是客户再用你的软件的时候,如果出现bug你也可以根据这个错误信息文件很快的锁定出错的位置和信息。下面讲一下log4j的具体用法:

    首先第一步:在你项目的根录下配置一个log4j.properties文件,代码如下:

错误的级别由高到低分别是:FATAL   ERROR  WARN   INFO DEBUG

//

log4j.rootLogger=INFO,A1,R
# ConsoleAppender 输出
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m %n
# File 输出 一天一个文件,输出路径可以定制,一般在根路径下
log4j.appender.R=org.apache.log4j.RollingFileAppender

//teachapp.log就是存放错误信息的.log的文件,下面是文件的路径,如果不存在的话会自动创建
log4j.appender.R.File=D://myjavapro//teacheapp1.1//teacheapp//teachapp.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p]  %m %n

     第二步:声明一个变量logger,并把他实例化private Logger logger = Logger.getLogger(DepartmentServiceImpl.class);

DepartmentServiceImpl.class是你要测试的类的名字。

然后就是在你的抛出异常的catch中输出你的错误信息就行,下面就以我开发中的一个例子来讲一下吧:

public class DepartmentServiceImpl extends BaseImpl implements
  DepartmentService {

 private Logger logger = Logger.getLogger(DepartmentServiceImpl.class);
 public int create(Department department) {
  int state = 0;
  if (department != null) {
   String sql = "INSERT INTO T_DEPARTMENT(ID,DNAME,DCHAIRMAN,DTEL,DETAILS,MODIFIEDTIME,REMARK)VALUES(?,?,?,?,?,?,?)";
   Connection conn = this.getConn();
   PreparedStatement preparedStatement = null;
   try {
    preparedStatement = conn.prepareStatement(sql);
    preparedStatement.setString(1, PrimaryKeyGenerator.getPk());
    preparedStatement.setString(2, department.getDname());
    preparedStatement.setString(3, department.getChairman());
    preparedStatement.setString(4, department.getDtel());
    preparedStatement.setString(5, department.getDetails());
    preparedStatement.setString(6, ChineseSimpleTime.getChTime());
    preparedStatement.setString(7, department.getRemarks());
    state = preparedStatement.executeUpdate();
    conn.commit();

   } catch (SQLException e) {
    try {
     conn.rollback();
    } catch (SQLException e1) {
     // TODO Auto-generated catch block
     e1.printStackTrace();
    }
    e.printStackTrace();
    logger.info("DepartmentServiceImpl---->create异常");
   } finally {

    try {
     if (conn != null) {
      conn.close();
     }
     if (preparedStatement != null) {
      preparedStatement.close();
     }
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

   }
  }

  return state;
 }

第三步:接下来就是写你的测试类了

package com.su02.teacheapp.tests.impls;

import com.su02.teacheapp.beans.Department;
import com.su02.teacheapp.impls.DepartmentServiceImpl;

import junit.framework.TestCase;

public class DepartmentServiceImplTest extends TestCase {
 private DepartmentServiceImpl departmentServiceImpl;
 @Override
 protected void setUp() throws Exception {
  departmentServiceImpl=new DepartmentServiceImpl();
  super.setUp();
 }
 public void testDocreate(){

//这里我的department就这个是不为空的字段
  Department department=new Department("外语学院","留名","101","123");
  assertTrue(departmentServiceImpl.create(department)>0);
 }
}

其实这个log4j的使用很简单的,只要稍微动一下脑子就可以搞定的!