`

Log 日志的使用.

阅读更多

首先要下载,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

 

 

分享到:
评论

相关推荐

    log4j.properties(完整版) log4j.properties(精简版)

    **日志框架Log4j详解** 在Java开发中,日志记录是一项不可或缺的功能,它能够帮助开发者追踪程序运行状态,定位错误,优化性能,并为后期维护提供重要信息。Log4j是Apache组织开发的一个强大的、灵活的日志记录框架...

    log4j.jar包,和log4j.properties配置文件下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中插入日志语句,以便跟踪程序的运行情况、调试错误、监控性能等。这个框架由Apache软件基金会开发,是许多Java项目的首选日志解决方案,因为它具有...

    log4j.properties 的使用详解(含log4j.properties)

    本文将详细介绍如何配置和使用log4j.properties文件,以实现灵活的日志管理。 一、log4j简介 log4j是Apache组织提供的一款开源日志框架,它具有可配置性、可扩展性和高性能的特点。log4j的核心组件包括Appender...

    log4j.properties配置文件

    - `log4j.rootLogger`: 定义了根日志记录器(root logger)的默认级别和使用的Appender。 - `debug`: 设置根日志记录器的默认级别为DEBUG。 - `,stdout`: 表示日志消息将被输出到名为“stdout”的Appender。 #### 五...

    log4j.zip 项目日志

    本文将围绕“log4j.zip”项目日志,详细介绍Log4j的基本概念、配置、使用方法以及优化策略。 一、Log4j简介 Log4j是由Apache软件基金会开发的一款开源日志组件,适用于Java平台。它的设计理念是提供一个灵活且高效...

    log4j.zip和log4j.jar日志文档的处理

    `log4j.API`可能是Log4j的API文档,它提供了详细的类和方法说明,可以帮助开发者了解每个接口和类的作用,以及如何使用它们来记录日志。 此外,压缩包可能还包含了Log4j的学习资料,这些资料可能涵盖Log4j的基本...

    log4j.jar及log4j.xml

    **日志框架Log4j详解** 在Java开发中,日志记录是一项至关重要的任务,它帮助开发者追踪程序运行...通过合理的配置和使用,Log4j能够为开发者提供强大且灵活的日志管理能力,帮助他们更好地监控和维护Java应用程序。

    Oracle DG下修改redo log和standby redo log日志大小.txt

    Oracle DG下修改redo log和standby redo log日志大小.txt

    log4j.properties配置详解

    Log4j是一种广泛应用于Java应用程序的日志框架,它可以帮助开发者轻松管理应用程序的日志记录过程。Log4j支持多种配置方式,其中.properties文件配置是最常用的一种。通过.properties文件,我们可以灵活地设置日志...

    log4Net.dll+使用详解

    **log4Net.dll 使用详解** 在.NET开发环境中,日志管理是不可或缺的一部分,它能够帮助开发者追踪程序运行状态,定位错误,以及进行性能分析。Log4net是Apache软件基金会的一个开源项目,它为.NET Framework提供了...

    Log4jToWriterAppender.zip

    Log4j作为Java领域广泛使用的日志框架,提供了丰富的功能和灵活性。本文将通过分析名为"Log4jToWriterAppender.zip"的项目,探讨如何利用Log4j中的WriterAppender来改变日志的输出目的地,以满足特定的日志处理需求...

    log4j与log4j.properties的配置.doc

    Log4j 配置详解 Log4j 是一个流行的 Java 日志记录工具,提供了灵活的日志记录机制,能够满足不同的...了解 Log4j 的配置步骤、日志输出级别、appenders 和 layouts,可以帮助我们更好地使用 Log4j 实现日志记录。

    log4j的详细配置,log4j.xml和log4j.properties,日志输出到文件,邮件,数据库,控制台等

    - **JDBC配置**:使用`&lt;JDBC&gt;` appender,需要配置数据库连接信息,定义日志表结构,然后将日志信息存储到数据库中。 8. **实际应用**:`Log4jTest`可能是测试代码或示例,演示如何在实际项目中应用上述配置,进行...

    log4j使用jar包和log4j.properties配置文件

    Log4j是Apache组织提供的一款广泛使用的Java日志框架,因其灵活性、高效性和可扩展性而备受青睐。本文将详细探讨Log4j的使用,主要关注1.2.17版本的jar包以及配置文件`log4j.properties`。 ### 1. Log4j简介 Log4j...

    log4j.rar java写LOG日志的驱动

    **Java日志框架Log4j详解** 在Java编程中,日志记录是不可或缺的一部分,它帮助开发者追踪程序运行状态,定位...了解并熟练掌握Log4j的使用,有助于提升开发效率,优化日志管理,为问题排查和系统监控提供有力支持。

    spdlog-1.x_11_

    spdlog是一个在C++编程语言中广泛使用的高性能日志库,它提供了丰富的功能,使得在开发过程中记录、管理和分析日志变得简单而高效。 描述中提到,这个库是开源的,这意味着它的源代码可以被自由地使用、修改和分发...

    log4j.properties的简单运用

    Log4j是一款广泛使用的日志框架,它允许我们自定义日志级别、格式以及输出目的地。本文将围绕`log4j.properties`配置文件,探讨其基本用法和重要概念。 一、Log4j的基本结构 Log4j主要由三个核心组件构成:Logger...

    Log4j+使用方法+配置文件log4j.properties

    Log4j是Apache组织开发的一款强大的Java日志记录框架,被广泛应用于各种Java项目中,以提供灵活的日志输出和管理。它允许开发者控制日志信息的输出级别、格式以及输出位置,帮助调试和监控系统运行状态。Log4j的核心...

    log日志工具.rar

    "log日志工具.rar"这个压缩包文件包含了关于日志使用的详细信息,包括源码分析和示例代码。 首先,我们来探讨日志在安卓应用开发中的作用。在安卓系统(Android System)中,日志系统为开发者提供了一个记录和查看...

    log4j按功能保存日志

    Log4j是一款广泛使用的Java日志记录框架,它允许开发者按照功能模块或特定需求记录应用程序运行过程中的事件信息。在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入...

Global site tag (gtag.js) - Google Analytics