gpt4 book ai didi

c# - 使用锁定捕获异常以写入物理日志文件

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:19 27 4
gpt4 key购买 nike

我的团队正在开发 C# ASP.NET Web 应用程序。我决定通过写入错误日志文件来处理错误。

我编写的 log.Error 方法会记录到错误目录中的物理日志文件。

我认为在执行 log.Error 方法时使用锁来控制线程是合适的,因为我想在每次发生错误时记录错误。

因此这里是我的大部分异常处理的格式:

protected void blahblahCsharpMethodBlahBlah()
{
try
{
blah blah C# code blah blah
}
catch(Exception ex ){
lock (_objectblahblahCsharpMethodBlahBlah)
{
// The following log.Error method that I wrote would log to a physical log file in an error directory.
log.Error(ex.ToString(),
PerlsPivotErrorDirectory,
System.Reflection.MethodBase.GetCurrentMethod().Name,
this.GetType().Name, System.IO.Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().Location));
}
}
} // protected void blahblahCsharpMethodBlahBlah()

使用锁来控制线程以便它们以正确的序列化方式执行 log.Error 方法是否正确?

最佳答案

如果要保证线程安全,就需要使用锁。但为了使其更简单、更可靠,我会锁定 Error 方法内部。通常,您在应用程序的不同类之间共享相同的日志对象(或至少相同的日志文件),因此直接登录您的日志记录(此处为错误)函数更有意义。

但您不想也不需要重新发明轮子。使用 NLog默认情况下是线程安全的。

关于c# - 使用锁定捕获异常以写入物理日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573352/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com