1 public string logFile;
2 private int configLogLevel = 0;
3 private Stream s = null;
4 StreamWriter sw = null;
5
6 /// <summary>
7 /// 用log文件名初始化对象
8 /// </summary>
9 /// <param name="logFile"></param>
10 public WriteLog(string logFile)
11 {
12 this.logFile = logFile;
13 initFile();
14 }
15
16 /// <summary>
17 /// 用log文件名和配置的log级别初始化对象
18 /// </summary>
19 /// <param name="logFile"></param>
20 /// <param name="configLevel"></param>
21 public WriteLog(string logFile,int configLevel)
22 {
23 this.logFile = logFile;
24 this.configLogLevel = configLevel;
25 initFile();
26 }
27
28 ~WriteLog()
29 {
30 //析构函数,释放资源
31 //if (sw != null)
32 //{
33 // sw.Flush();
34 // sw.Close();
35 //}
36 //if (s != null)
37 //{
38 // s.Flush();
39 // s.Close();
40 //}
41 }
42
43 /// <summary>
44 /// 初始化文件流
45 /// </summary>
46 private void initFile()
47 {
48 try
49 {
50 if (this.logFile == null || this.logFile == "") return;
51
52 string path = "";
53 string fileName = "";
54 if (this.logFile.IndexOf("\\") >= 0)
55 {
56 path = this.logFile.Substring(0,this.logFile.LastIndexOf("\\")+1);
57 fileName = this.logFile.Substring(this.logFile.LastIndexOf("\\")+1);
58 }
59 else if (this.logFile.IndexOf("/") >= 0)
60 {
61 path = this.logFile.Substring(0, this.logFile.LastIndexOf("/")+1);
62 fileName = this.logFile.Substring(this.logFile.LastIndexOf("/") + 1);
63 }
64 else
65 {
66 return;
67 }
68 string dateStr = DateTime.Now.ToString("yyyyMMdd");
69 path += dateStr;
70 if (!Directory.Exists(path))
71 {
72 Directory.CreateDirectory(path);
73 }
74 fileName = path + "\\"+ fileName;
75
76 if (File.Exists(fileName))
77 {
78 s = new FileStream(fileName, FileMode.Append, FileAccess.Write);
79 }
80 else
81 {
82 //CommonFunction.createDir(this.logFile.Substring(0, this.logFile.LastIndexOf(@"\")));
83 s = new FileStream(fileName, FileMode.CreateNew, FileAccess.Write);
84 s.Flush();
85 s.Close();
86 s = new FileStream(fileName, FileMode.Append, FileAccess.Write);
87 }
88
89 sw = new StreamWriter(s, Encoding.Default);//创建Stream流,指定编码方式
90 //sw.AutoFlush = true;
91 }
92 catch (Exception ex)
93 {
94 throw ex;
95 }
96 }
97
98 /// <summary>
99 /// 如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
100 /// </summary>
101 /// <param name="logLevel">当前log的级别</param>
102 /// <param name="configLevel">配置设定的log级别</param>
103 /// <param name="logContent">log内容</param>
104 //[MethodImpl(MethodImplOptions.Synchronized)]
105 public void log(int logLevel,int configLevel,string logContent)
106 {
107 //如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
108 if (logLevel < configLevel && sw != null && s != null)
109 {
110 try
111 {
112 lock (sw)
113 {
114 sw.WriteLine(DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString() + ":logLevel=" + logLevel + " ;configLevel=" + configLevel + " ;" + logContent);
115 sw.Flush();
116 //s.Flush();
117 }
118 }
119 catch (Exception ex)
120 {
121 ex.ToString();
122 }
123
124 }
125 }
126
127 /// <summary>
128 /// 如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
129 /// </summary>
130 /// <param name="logLevel">当前log的级别</param>
131 /// <param name="logContent">log内容</param>
132 //[MethodImpl(MethodImplOptions.Synchronized)]
133 public void log(int logLevel, string logContent)
134 {
135 //如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
136 if (logLevel < this.configLogLevel && sw != null && s != null)
137 {
138 try
139 {
140 lock (sw)
141 {
142 sw.WriteLine(DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString() + ":logLevel=" + logLevel + " ;configLevel=" + configLogLevel + " ;" + logContent);
143 sw.Flush();
144 //s.Flush();
145 }
146 }
147 catch (Exception ex)
148 {
149 ex.ToString();
150 }
151
152 }
153 }
154
155 /// <summary>
156 /// 如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
157 /// </summary>
158 /// <param name="logLevel">当前log的级别</param>
159 /// <param name="logContent">log内容</param>
160 /// <param name="method">log抛出调用的方法名</param>
161 //[MethodImpl(MethodImplOptions.Synchronized)]
162 public void log(int logLevel, string logContent,string methodName)
163 {
164 //如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
165 if (logLevel < this.configLogLevel && sw != null && s != null)
166 {
167 try
168 {
169 lock (sw)
170 {
171 sw.WriteLine(DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString() + ":logLevel=" + logLevel + " ;configLevel=" + configLogLevel + " ;method=" + methodName + ";content=" + logContent);
172 sw.Flush();
173 //s.Flush();
174 }
175 }
176 catch (Exception ex)
177 {
178 ex.ToString();
179 }
180 }
181 }
182
183 public void close()
184 {
185 try
186 {
187 if (sw != null)
188 {
189 sw.Flush();
190 sw.Close();
191 }
192 if (s != null)
193 {
194 s.Flush();
195 s.Close();
196 }
197 }
198 catch (Exception ex)
199 {
200 ex.ToString();
201 }
202 }