C# "cached debug log"

标签 c# debugging logging caching

我想在这里向C#专家请教。我的调试日志有问题。我有一个简单的类,它只打开一个文件,写下提供的字符串并再次关闭该文件。但是,有时我在使用多线程时需要使用这个调试日志。于是麻烦就来了。我不能多次打开文件,所以我收到一个异常,因为我只是尝试再次打开锁定的文件。为此,我想要一个类似“缓存调试日志”的东西来防止这个异常。有没有简单的方法来实现这个?非常感谢。

最佳答案

C# 4.0 提供线程安全的集合,如 System.Collections.Concurrent.ConcurrentQueue<T> .您可以修改您的日志类,使其在自己的线程中运行,并且调用日志方法只是将消息添加到这样的队列中。这样,您的日志记录线程就可以安全地从队列中读取项目,并在不中断的情况下写入文件。

编辑

当然,最方便的做法是开始使用已经处理好这些问题的现有日志记录框架。我推荐 NLog,尽管 log4net 也是一个值得竞争的对象。

关于C# "cached debug log",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920247/

相关文章:

debugging - 意外的运算符(operator) [ : git: in bourne shell script 'if' conditional statement

java - 从文件上传 Elasticsearch 中的数据

java - "WARN No appenders could be found for logger"甚至记录器正在记录内容

java - 登录设备到文件

c# - 使用 log4net 的 RichTextBoxAppender

c# - 使用 MongoDB 更新内部列表

c# - 为什么跳转到 WPF for Business Application 而不是使用 Winforms

c# - 为什么导航属性有时会返回 null?

.net - 为什么Visual Studio不允许我进入Type.GetType()?

r - 尽管在函数外工作,ggplot 在函数内仍无法正常工作 - R