写日志的时候怎么实现如果日志文件被打开话的话,程序仍然可以写入?
程序在运行的时候要往日志里记录日志,但是如果正好这个时候日志文件被打开查看程序就会报错,请问怎么解决这个问题?
------解决方案--------------------像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();
           }
       }
------解决方案--------------------建立缓存机制