我有一个webservices的项目。我正在尝试使用StreamWriter为每个方法编写一个日志,在我的本地机器上一切正常。
这样的事情:
static StreamWriter sw;
try{
if (File.Exists(Directorio + FILE_NAME))
{
sw = File.AppendText(Directorio + FILE_NAME);
}
else
{
sw = File.CreateText(Directorio + FILE_NAME);
sw.WriteLine("---LOG ");
}
sw.WriteLine(Date);
sw.WriteLine(Header);
sw.WriteLine();
sw.Close();//*/
}catch(Exception){}
但是当上传到服务器时,它会抛出一个因为文件正在使用而无法写入的错误。但我每次都关闭它,我认为使用try catch应该忽略该部分并继续使用该方法,因为我不想影响每个方法的过程。
我知道这些信息很少,我不能在这里重现我的问题,但希望有这样的错误的人可以给我一个提示。
答案 0 :(得分:2)
Web服务器通常一次处理多个请求。偶尔的错误很可能是由于一个请求尝试记录而另一个请求已经记录,但尚未完成。
如果您希望使用自己的日志记录框架,则需要协调对文件的写入。
您还可以使用其中一种特殊的开源日志记录框架,例如NLog。
答案 1 :(得分:0)
这可能是由于多个请求进入Web服务器,一个请求尝试写入此日志文件,而其他请求尝试打开。可能的修复可能是线程同步,这不好,因为它会显着降低Web服务的性能。 或者我建议使用nLog(http://nlog-project.org/),在几个项目中使用没有任何问题。