2

为了处理我的 Web 应用程序中的错误,我正在创建一个日志文件,它将在 global.asax 的 Application_Error() 事件中创建,以及基于日期创建的那些日志文件(每天 1 个)

我正在考虑发生错误的情况,并且在同一时间文件实例同时从多个用户写入

所以它可能会抛出异常该文件已被另一个用户使用它可能就像我不确定

任何人都可以帮助处理这种情况

非常感谢

4

2 回答 2

1

用于mutex锁定您的书写程序。我建议mutex,而不是lock()因为可以捕获所有可能引发错误的池/线程。

在 MSDN 上有详细信息mutex和示例:

http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx

一个简单的例子

public void LogThis(string LogDetails) 
{
    var mut = new Mutex(true, "LogMutexName");

    try
    {   
        // Wait until it is safe to enter.
        mut.WaitOne();

        // here you open write close your file
    }
    finally
    {
        // Release the Mutex.
        mut.ReleaseMutex();
    }   
}
于 2012-06-16T12:54:02.323 回答
1

你可以使用像ELMAH这样的东西,它会给你相当不错的错误记录。它在为您记录的方式和内容方面非常灵活。您也可以毫不费力地使用 NuGet 添加它。

或者看看NLog

于 2012-06-16T20:06:23.043 回答