编写背景:
今天下午,在写一个多线程的测试程序《读者写者-【写者优先】》(该文章会在晚些的时候发出来)的时候,想看一下控制台的打印效果,但是你懂的,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:目前专注于云计算和敏捷开发