首先要下载,log4j-1.2.11.jar 这个包 和 log4j.properties 的属性文件,
有了这两个文件之后,.我们开始新建Java工程,.
把log4j.properties属性文件拷贝到src目录下, 还有把log4j-1.2.11.jar 包拷贝到lib目录中,
接下来,开始写Log的封装类..
package pack.java.conmm.log;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.logging.LogFactory;
public class Log {
private org.apache.commons.logging.Log log;
private static final String POSSIBLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
private static final int RANDOM_KEY_LENGTH = 4;
public Log() {
super();
// TODO Auto-generated constructor stub
}
private static ThreadLocal threadlocal_UniqueKey = new ThreadLocal() {
protected synchronized Object initialValue() {
return RandomStringUtils.random(RANDOM_KEY_LENGTH, POSSIBLE_CHARS);
}
};
public static String getUniqueKey(){
return (String)threadlocal_UniqueKey.get();
}
public static void destoyUniqueKey(){
threadlocal_UniqueKey.set(null);
}
public static Log getLog(Class class1){
return new Log(class1);
}
public Log(Class class1) {
this.log=LogFactory.getLog(class1);
}
public void error(String msg){
log.error(getUniqueKey()+"-"+msg);
}
public void error(String msg,Throwable throwable){
log.error(getUniqueKey()+"-"+msg,throwable);
}
public void info(String msg){
log.info(getUniqueKey()+"-"+msg);
}
public void info(String msg,Throwable throwable){
log.info(msg, throwable);
}
public void debug(String msg){
log.debug(msg);
}
public void warn(String msg){
log.warn(msg);
}
public void warn(String msg,Throwable throwable){
log.warn(msg, throwable);
}
public void debug(String msg,Throwable throwable){
log.debug(msg, throwable);
}
public void trace(String msg){
log.trace(msg);
}
public void trace(String msg,Throwable throwable){
log.trace(msg, throwable);
}
}
建立一个BaseException异常类,继承至Exception类;
package pack.java.exception;
/**
* BaseException 类 继承只 父类Exception;
* @author Administrator
*
*/
public class BaseException extends Exception {
private static final long serialVersionUID = -2059199777137667299L;
public BaseException() {
super();
// TODO Auto-generated constructor stub
}
public BaseException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public BaseException(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public BaseException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
}
//自定义的一个异常,继承至BaseException类;
package pack.java.exception;
public class PersonException extends BaseException {
private static final long serialVersionUID = -3330457952276038323L;
public PersonException(){
super("Unkown System PersonException.");
}
public PersonException(String msg){
super(msg);
}
public PersonException(String msg,Throwable cause){
super(msg, cause);
}
public PersonException(Throwable cause){
super(cause);
}
}
建立一个简单的JavaBean文件.
package pack.java.javaBean;
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 4540756310460625945L;
private String name;
private String sex;
private int age;
private String address;
private String cardId;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(String name, String sex, int age, String address,
String cardId) {
super();
this.name = name;
this.sex = sex;
this.age = age;
this.address = address;
this.cardId = cardId;
}
}
JavaBean创建好之后,接下来就是写测试类了.
package pack.java.service;
import java.util.ArrayList;
import java.util.List;
import pack.java.conmm.log.Log;
import pack.java.exception.PersonException;
import pack.java.javaBean.Person;
public class TestLog{
private Log log=new Log(PersonServiceImpl.class);
public List<Person> getPerson() throws PersonException {
// TODO Auto-generated method stub
List<Person> list=new ArrayList<Person>();
Person person2=new Person();
person2.setName("有名");
person2.setAddress("上海");
person2.setAge(22);
person2.setCardId("3244554433335434");
person2.setSex("Girl");
list.add(person2);
Person person=new Person();
person.setName("无名");
person.setAddress("深圳");
person.setAge(11);
person.setCardId("43022113333323");
person.setSex("boy");
list.add(person);
for(Person per:list){
if(per.getAge() == 11){
log.debug("我设置的年龄为11岁,这里抛出异常.");
throw new PersonException("我设置的年龄为11岁",new Throwable("抛出异常!!"));
}else{
log.debug(per.getName()+","+per.getAge()+","+per.getAddress()+","+per.getSex());
}
}
return list;
}
public Person setPerson(Person person) throws PersonException {
// TODO Auto-generated method stub
return person;
}
public static void main(String[] args){
new PersonServiceImpl().getLogMethod();
}
public void getLogMethod(){
PersonServiceImpl personServiceImpl=new PersonServiceImpl();
try {
personServiceImpl.getPerson();
} catch (PersonException e) {
// TODO Auto-generated catch block
log.debug("PersonException:",e);
e.printStackTrace();
}
System.out.println("继续执行@@@@@@@");
}
}
运行之后,我们就能在控制台输出:
------------------------------------------------------------------------------------------------------
2010-11-12 13:52:59 有名,22,上海,Girl
2010-11-12 13:52:59 我设置的年龄为11岁,这里抛出异常.
2010-11-12 13:52:59 PersonException:
pack.java.exception.PersonException: 我设置的年龄为11岁
at pack.java.service.PersonServiceImpl.getPerson(PersonServiceImpl.java:36)
at pack.java.service.PersonServiceImpl.getLogMethod(PersonServiceImpl.java:56)
at pack.java.service.PersonServiceImpl.main(PersonServiceImpl.java:50)
Caused by: java.lang.Throwable: 抛出异常!!
... 3 more
pack.java.exception.PersonException: 我设置的年龄为11岁
at pack.java.service.PersonServiceImpl.getPerson(PersonServiceImpl.java:36)
at pack.java.service.PersonServiceImpl.getLogMethod(PersonServiceImpl.java:56)
at pack.java.service.PersonServiceImpl.main(PersonServiceImpl.java:50)
Caused by: java.lang.Throwable: 抛出异常!!
... 3 more
继续执行@@@@@@@
红色部分的是,抛出出来的堆栈,信息.. 而黑色字体这时Log里面在控制台输出的信息,然后我们在工程refresh一下.就能看到
一个XXX.Log日志文件,里面就保存了控制台输出的信息了.
这个就是我生成之后的.log文件的内容.
2010-11-12 13:52:59 pack.java.conmm.log.Log.debug(Log.java:59) 有名,22,上海,Girl
2010-11-12 13:52:59 pack.java.conmm.log.Log.debug(Log.java:59) 我设置的年龄为11岁,这里抛出异常.
2010-11-12 13:52:59 pack.java.conmm.log.Log.debug(Log.java:71) PersonException:
pack.java.exception.PersonException: 我设置的年龄为11岁
at pack.java.service.PersonServiceImpl.getPerson(PersonServiceImpl.java:36)
at pack.java.service.PersonServiceImpl.getLogMethod(PersonServiceImpl.java:56)
at pack.java.service.PersonServiceImpl.main(PersonServiceImpl.java:50)
Caused by: java.lang.Throwable: 抛出异常!!
... 3 more