自己写的仿Log4j控制台打印记录写到文件的工具类

编写背景:

           今天下午,在写一个多线程的测试程序读者写者-【写者优先】(该文章会在晚些的时候发出来)的时候,想看一下控制台的打印效果,但是你懂的,eclipse控制台只能保存一部分的数据。配置log4j又有点大材小用。

所以就自己写了这个可以写入本地文件的工具类:

 

工具类实现的功能:

1.按照[时间-调用类-调用方法-调用方法所在行号-message]的格式 回车写入文件

2.实现了每天一个日志文件的功能

闲话不说,上代码:

 

Write2File.java

package com.bankht.writerReader;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * @author: zhuyong
 * @创建时间:2012-6-7 下午03:10:30
 * 
 * @类说明:写入文件
 */
public class Write2File {

	private static final String getToday = new GregorianCalendar().get(Calendar.YEAR)+"-"
										 + new GregorianCalendar().get(Calendar.MONTH)+"-"
										 + new GregorianCalendar().get(Calendar.DAY_OF_MONTH)+"-";
	private static final String filePath = "D:/" + getToday + "Log.txt";

	public void write2File(String message) {

		StackTraceElement stack[] = (new Throwable()).getStackTrace();
		StackTraceElement s = stack[1];
		String headerMessage = s.getClassName() + "." + s.getMethodName()
				+ "()" + " ★ lineNum:" + s.getLineNumber() + " ★ message:";

		headerMessage = addDateTimeHeader(headerMessage);
		message = headerMessage + message + "\r\n";

		FileWriter fileWriter = null;
		File file = null;
		try {
			file = new File(filePath);
			fileWriter = new FileWriter(file, true);
			fileWriter.write(message);
		} catch (IOException ie) {
			ie.printStackTrace();
		} finally {
			try {
				fileWriter.close();
			} catch (IOException ie) {
				ie.printStackTrace();
			}
		}

	}

	public String addDateTimeHeader(String headerMessage) {
		String dateTimeHeader = new Date().toLocaleString() + " ★ ";
		return dateTimeHeader += headerMessage;
	}
}


TestWrite2File.java

package com.bankht.writerReader;

import org.junit.Test;

/** 
 * @author:zhuyong 
 * @创建时间:2012-6-7 下午03:30:54 
 *
 * @类说明:测试写入文件
 */
public class TestWrite2File {

	private Write2File log = new Write2File();
	private String message = null;

	@Test
	public void testWrite2File1() {
		message = "特种兵—AK47";
		log.write2File(message);
	}

	@Test
	public void testWrite2File2() {
		message = "目前专注于云计算和敏捷开发";
		log.write2File(message);
	}

}


显示效果:如下

 

文件内显示效果:如下

2012-6-7 17:26:02 ★ com.bankht.writerReader.TestWrite2File.testWrite2File1() ★ lineNum:18 ★ message:特种兵—AK47
2012-6-7 17:26:05 ★ com.bankht.writerReader.TestWrite2File.testWrite2File2() ★ lineNum:23 ★ message:目前专注于云计算和敏捷开发
2012-6-7 17:30:21 ★ com.bankht.writerReader.TestWrite2File.testWrite2File2() ★ lineNum:23 ★ message:目前专注于云计算和敏捷开发
2012-6-7 17:30:39 ★ com.bankht.writerReader.TestWrite2File.testWrite2File1() ★ lineNum:18 ★ message:特种兵—AK47
2012-6-7 17:31:50 ★ com.bankht.writerReader.TestWrite2File.testWrite2File2() ★ lineNum:23 ★ message:目前专注于云计算和敏捷开发
2012-6-7 17:36:13 ★ com.bankht.writerReader.TestWrite2File.testWrite2File1() ★ lineNum:19 ★ message:特种兵—AK47
2012-6-7 17:45:46 ★ com.bankht.writerReader.TestWrite2File.testWrite2File2() ★ lineNum:25 ★ message:目前专注于云计算和敏捷开发


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值