登录C#网站时出错

登录C#网站时出错,c#,asp.net,.net,logging,error-handling,C#,Asp.net,.net,Logging,Error Handling,我计划实现错误日志记录,编写类似于: 我的问题是:因为它是一个网站,我会同时有多个用户。在这种情况下,如果多个用户同时遇到异常并尝试写入同一文件,它将再次给我一个异常,对吗?在这种情况下,如何为同时使用的用户正确地实现错误日志记录?还是这样行 提前感谢。我建议您使用已建立的日志框架,如或。过去我在许多项目中使用过log4net,它完美地处理了这个场景 编辑: 作为进一步说明,以及处理来自多线程的日志消息,log4net还允许您管理日志文件的增长大小,并通过提供内置的滚动日志机制。我建议您使用已建

我计划实现错误日志记录,编写类似于:

我的问题是:因为它是一个网站,我会同时有多个用户。在这种情况下,如果多个用户同时遇到异常并尝试写入同一文件,它将再次给我一个异常,对吗?在这种情况下,如何为同时使用的用户正确地实现错误日志记录?还是这样行


提前感谢。

我建议您使用已建立的日志框架,如或。过去我在许多项目中使用过log4net,它完美地处理了这个场景

编辑:


作为进一步说明,以及处理来自多线程的日志消息,log4net还允许您管理日志文件的增长大小,并通过提供内置的滚动日志机制。

我建议您使用已建立的日志框架,如或。过去我在许多项目中使用过log4net,它完美地处理了这个场景

编辑:


作为进一步说明,以及处理来自多线程的日志消息,log4net还允许您管理日志文件的增长大小,并通过提供内置的滚动日志机制。

除了使用NLog或其他日志库之外,您锁定这种情况的方式是使用互斥锁。我建议使用
mutex
,而不是
lock()
,因为它可以捕获所有可能抛出错误的池/线程

MSDN上有关于互斥的详细信息和示例:

一个简单的例子

public static void WriteError(string errorMessage)
{
    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();
    }   
}

除了使用NLog或其他日志库之外,锁定这种情况的方法是使用互斥锁。我建议使用
mutex
,而不是
lock()
,因为它可以捕获所有可能抛出错误的池/线程

MSDN上有关于互斥的详细信息和示例:

一个简单的例子

public static void WriteError(string errorMessage)
{
    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();
    }   
}

记录错误的好主意,尝试运行自己的日志框架的坏主意。正如回答中提到的,请查看log4net-超级易于使用,并且通过配置设置灵活地调整日志记录。此外,它还为记录警告和其他信息(不仅仅是错误)提供了强大的支持。记录错误是个好主意,尝试使用自己的日志框架是个糟糕的主意。正如回答中提到的,请查看log4net-超级易于使用,并且通过配置设置灵活地调整日志记录。此外,它为日志警告和其他信息提供了强大的支持,而不仅仅是错误。我很可能会使用log4net,但很高兴知道如何克服这个特殊问题!谢谢我很可能会使用log4net,但很高兴知道如何克服这个特殊的问题!谢谢谢谢,我将浏览建议的框架并选择一个!谢谢,我将浏览建议的框架并选择一个!