1
import java.io.*;
2
import java.util.*;
3
/** *//**
4
*
5
* <p>Title: LOG 日志记录</p>
6
* <p>Description:
7
* 此类主要用来记录系统中发生的重大事件,以及由于程序本身所产生的错误信息</p>
8
* <p>Copyright: Copyright (c) 2003</p>
9
* <p>Company: hoten </p>
10
* @author lqf
11
* @version 1.0
12
*/
13
////////////////////////////////////////////////////////////////////////////////////////////
14
//
15
///////////////////////////////////////////////////////////////////////////////////////////
16
public class Log
{
17
/** *//**
18
* 用来记录系统重大事件
19
* @param msg 重大事件
20
* @param fileName 日志文件的路径及名称
21
*/
22
23
public static void printBytes(byte[] msg,String logFile)
{
24
StringBuffer sb = new StringBuffer(100);
25
for(int i=0;i<msg.length;i++)
{
26
sb.append((int)msg[i]);
27
sb.append(",");
28
}
29
printEvent(sb.toString(),logFile);
30
}
31
public synchronized static void printEvent(String msg,String fileName)
32
{
33
msg = new String( "时间:"+CTime.getTime(CTime.YYMMDDhhmmss) + " 事件消息: " + msg);
34
if(fileName!=null) printToFile(msg,fileName);
35
else print(msg);
36
return;
37
}
38
39
public synchronized static void printError(Throwable e,String msg,String fileName)
40
{
41
StringBuffer errors=new StringBuffer(100);
42
errors.append("时间:");
43
errors.append(CTime.getTime(CTime.YYMMDDhhmmssxxx));
44
errors.append(" 消息:");
45
errors.append(msg);
46
errors.append(" Exception: ");
47
if(fileName!=null)
{
48
printToFile(errors.toString().trim(),fileName);
49
try
{
50
e.printStackTrace(new PrintWriter(new FileWriter(fileName,true),true));//
51
}
52
catch (Exception ex)
{
53
}
54
}
55
else print(errors.toString().trim());
56
return;
57
}
58
/** *//**
59
* 记录应程序本身发生的错误,主要给程序员观察。
60
* @param e 一个Exception
61
* @param mobile 用户手机号码
62
* @param msg 用户发送的消息
63
* @param fileName 日志文件的路径及名称
64
*/
65
public synchronized static void printError(Throwable e,String mobile,String msg,String fileName)
66
{
67
StringBuffer errors=new StringBuffer(100);
68
errors.append("时间:");
69
errors.append(CTime.getTime(CTime.YYMMDDhhmmssxxx));
70
errors.append(" 手机号码:");
71
errors.append(mobile);
72
errors.append(" 消息:");
73
errors.append(msg);
74
errors.append(" Exception: ");
75
if(fileName!=null)
{
76
printToFile(errors.toString().trim(),fileName);
77
try
{
78
e.printStackTrace(new PrintWriter(new FileWriter(fileName,true),true));//
79
}
80
catch (Exception ex)
{
81
}
82
}
83
else print(errors.toString().trim());
84
return;
85
}
86
/** *//**把错误消息打印到屏幕上
87
*
88
* @param msg 错误消息
89
*/
90
private static void print(String msg)
91
{
92
System.out.println(msg);
93
}
94
/** *//**
95
* 把消息打印到指定文件
96
* @param msg 错误消息
97
* @param fileName 指定的文件
98
*/
99
100
private static void printToFile(String msg,String fileName) //打印到文件中
101
{
102
BufferedWriter mBufWriter = null;
103
try
104
{
105
if(!createFile(fileName)) return ;
106
FileWriter fileWriter = new FileWriter(fileName, true);
107
mBufWriter = new BufferedWriter(fileWriter);
108
109
mBufWriter.write(msg);
110
mBufWriter.newLine();
111
112
mBufWriter.flush();
113
mBufWriter.close();
114
}
115
catch (Throwable e)
116
{
117
try
{ mBufWriter.close(); } catch (Throwable t)
{};
118
}
119
return;
120
}
121
/** *//**
122
* 用来创建文件和文件夹
123
* @param fileName 文件或文件夹名称
124
* @return
125
* @throws IOException
126
* @throws Exception
127
*/
128
129
private static boolean createFile(String fileName)throws IOException ,Exception
{
130
File file = new File(fileName);
131
if (file.exists()) /**//* does file exist? If so, can it be written to */
132
{
133
if (file.canWrite() == false)
134
return false;
135
}
136
else
137
{
138
String path = null; /**//* Does not exist. Create the directories */
139
140
int firstSlash = fileName.indexOf(File.separatorChar);
141
int finalSlash = fileName.lastIndexOf(File.separatorChar);
142
143
if (finalSlash == 0)
{ /**//* error, not valid path */ }
144
else if (finalSlash == 1) /**//* UNIX root dir */
145
{
146
path = File.separator;
147
}
148
else if (firstSlash == finalSlash)
149
{ /**//* for example c:\ Then make sure slash is part of path */
150
path = fileName.substring(0,finalSlash+1);
151
}
152
else
153
{ path = fileName.substring(0,finalSlash); }
154
155
File dir = new File(path);
156
dir.mkdirs();
157
}
158
return true;
159
}
160
}