Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在发生异常之前在内存中收集日志,并在异常发生后写入文件?_C#_Performance_Wcf_Nlog - Fatal编程技术网

C# 如何在发生异常之前在内存中收集日志,并在异常发生后写入文件?

C# 如何在发生异常之前在内存中收集日志,并在异常发生后写入文件?,c#,performance,wcf,nlog,C#,Performance,Wcf,Nlog,我用的是NLog。下一步我要做的是:把所有的事情都记录在内存中,直到有不好的事情发生。如果请求成功完成-刷新内存日志。如果发生了异常-将从请求一开始收集的所有内容写入日志文件。 我该怎么办?创建两个记录器(MemoryLogger和FileLogger),并在请求期间使用第一个记录器收集信息,如有必要,使用第二个记录器将每个请求的所有信息写入文件 它是否会提高性能?使用OutOfMemoryException的100%工作代码?只需使用递归。将内容保留在内存中,直到有不好的事情发生,但可以保证会

我用的是NLog。下一步我要做的是:把所有的事情都记录在内存中,直到有不好的事情发生。如果请求成功完成-刷新内存日志。如果发生了异常-将从请求一开始收集的所有内容写入日志文件。 我该怎么办?创建两个记录器(MemoryLogger和FileLogger),并在请求期间使用第一个记录器收集信息,如有必要,使用第二个记录器将每个请求的所有信息写入文件


它是否会提高性能?

使用
OutOfMemoryException的100%工作代码
?只需使用递归。将内容保留在内存中,直到有不好的事情发生,但可以保证会有不好的事情发生。如果有人拔下你的机器,你的日志就会消失。听起来与这家伙的尝试类似:(使用async discard功能限制内存使用,使用auto flush在警告/错误事件时触发最后一个条目的写入)。现在似乎还有一个人也对此感兴趣,并且已经做了一个PR,修复了BufferingTargetRapper,以支持这个100%工作的带有
OutOfMemoryException
?只需使用递归。将内容保留在内存中直到发生不好的事情,但可以保证会发生不好的事情。如果有人拔掉你的机器,你的日志就会被删除e、 听起来与这家伙的尝试类似:(使用异步丢弃功能限制内存使用,并自动刷新触发警告/错误事件最后条目的写入)。现在似乎还有人对此感兴趣,并制作了一个修复BufferingTargetRapper的PR来支持这一点