什么是可用于将一行文本记录到 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 是最快的。
我正在尝试寻找不会阻塞其调用线程的文本编写器。它将每天被调用超过 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 是最快的。