日期:2014-05-18  浏览次数:20868 次

写日志的时候怎么实现如果日志文件被打开话的话,程序仍然可以写入?
程序在运行的时候要往日志里记录日志,但是如果正好这个时候日志文件被打开查看程序就会报错,请问怎么解决这个问题?

------解决方案--------------------
像log4net之类的日志组件的话,你即使带开了日志文件,也可以正常写入,有一定的缓存机制,我没具体看过代码,但楼主可以用用看.
------解决方案--------------------
你的日志文件是什么类型的哦?
文本的?如txt的或是存数据库的?如果是文本的,那注意一下打开的时候读锁跟写锁的设置 ,
如果是数据库的,一般它是直接读的副本,应该不会出现这种问题

------解决方案--------------------
我以前写的一个日志文件,写文件的代码如下:你参考一下。文件格式没关系,主要是你写的过程
public void WriteToFile()
{
while (!Stopped)
{
if (MsgQueue.Count == 0)
{
Thread.Sleep(50);
continue;
}
string strMsg = "";
lock (MsgQueue.SyncRoot)
{
strMsg = System.Convert.ToString(MsgQueue.Dequeue());
}
StreamWriter writer = new StreamWriter(FileName, true);
writer.WriteLine(strMsg);
writer.Close();
}
}
------解决方案--------------------
建立缓存机制