什么是可用于将一行文本记录到 csv 文件的快速异步文本编写器?

What is a fast async text writer that can be used to log a line of text to a csv file?

我正在尝试寻找不会阻塞其调用线程的文本编写器。它将每天被调用超过 40 万次,并将用于将文本行记录到 csv 文件中。这是我到目前为止的想法:

public void callWriter()
        {

            textwriter.WriteToFileAsync(LINE_OF_DATA);

            //continue with rest of my program while file gets written to
        }

public async void WriteToFileAsync(string data)
        {
            using (StreamWriter streamWriter =
                new StreamWriter
                (
                    _path,
                    APPEND_FILE,
                    System.Text.Encoding.UTF8,
                    BUFFER_SIZE_IN_BYTES
                ))
            {
                await streamWriter.WriteLineAsync(data);
            }
        }

基于澄清你的需求是为了登录评论,我建议使用 NLog。

这是一个关于配置 NLog 的 SO post,这个问题很重要,因为任何用于日志记录的缓冲区(正如其他人所说)都是一个队列,需要相应地调整大小,否则它 'overflows' 并且消息可能会丢失。

最好不要依赖于在这里滚动你自己的解决方案。经过 public 次 bug-fixes 迭代并处理各种场景的项目将更健壮,性能更好。

您可以找到 NLog 与其他 .NET 日志记录的性能比较 frameworks/libraries 并发现 NLog 是最快的。