这是我写的写日志的类:
public static void WriteLog(string msg)
{
try
{
string log = LogPath + LogFielPrefix + "_" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
if (!File.Exists(log))
{
StreamWriter CreateLog = File.CreateText(log);
}
//同一天同一类日志以追加形式保存
sw = System.IO.File.AppendText(log);
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss: ") + msg);
sw.Flush();
}
catch
{
}
finally
{
sw.Close();
//sw.Close();
}
}
这是错误信息:
System.ObjectDisposedException: 无法访问已关闭的文件。
在 System.IO.__Error.FileNotOpen()
在 System.IO.FileStream.Flush()
在 System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
在 System.IO.StreamWriter.Dispose(Boolean disposing)
在 System.IO.StreamWriter.Close()
在 TJETCDataClient.LOG_OP.WriteLog(String msg) 位置 C:\Users\Administrator\Desktop\TJETCDataClient0916\LOG_OP.cs:行号 70
在 TJETCDataClient.TJETCDataClient.Rcv_AllMsg() 位置 C:\Users\Administrator\Desktop\TJETCDataClient0916\TJETCDataClient.cs:行号 332
2010-10-08 11:17:16: 无法访问已关闭的文件。
接收数据结束,线程返回
用户代码未处理 System.ObjectDisposedException
Message="无法访问已关闭的文件。"
Source="mscorlib"
ObjectName=""
StackTrace:
在 System.IO.__Error.FileNotOpen()
在 System.IO.FileStream.Flush()
在 System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
在 System.IO.StreamWriter.Dispose(Boolean disposing)
在 System.IO.StreamWriter.Close()
在 TJETCDataClient.LOG_OP.WriteLog(String msg) 位置 C:\Users\Administrator\Desktop\TJETCDataClient0916\LOG_OP.cs:行号 70
在 TJETCDataClient.TJETCDataClient.Deal_SP(Object source, ElapsedEventArgs e) 位置 C:\Users\Administrator\Desktop\TJETCDataClient0916\TJETCDataClient.cs:行号 689
在 System.Timers.ElapsedEventHandler.Invoke(Object sender, ElapsedEventArgs e)
在 System.Timers.Timer.MyTimerCallback(Object state)
InnerException:
这是出错代码,都是调用的写日志的类:
689行:LOG_OP.WriteLog(" 本次发送的记录条数是: " + count_record);
332行:LOG_OP.WriteLog(" 接收到新表:" + getTableName);
加锁了吗?
private static readonly object _lockLog = new object();
public static void WriteLog(string msg)
{
lock(_lockLog)
{
try
{
string log = LogPath + LogFielPrefix + "_" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
if (!File.Exists(log))
{
StreamWriter CreateLog = File.CreateText(log);
}
//同一天同一类日志以追加形式保存
sw = System.IO.File.AppendText(log);
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss: ") + msg);
sw.Flush();
}
catch
{
}
finally
{
sw.Close();
//sw.Close();
}
}
}
还有啊,建议您用log4net组件。
具体使用方法等问题,请搜索博客园