MVC3应用程序的异步日志记录

时间:2011-07-27 12:22:08

标签: asp.net-mvc-3 c#-4.0 asynchronous task-parallel-library

我有一个运行良好的MVC3应用程序。我想在数据库中添加一些日志记录,但我希望异步发生日志记录。基本上,在控制器方法的某个地方,我想调度数据库日志代码来执行它需要做的事情,让它做到这一点,而不会阻止控制器以快乐的方式运行。

从控制器的角度来看,它并不关心数据库写入是否成功失败或延迟。

我认为我不想使用AsyncController因为我真的不关心回调。我需要什么?

3 个答案:

答案 0 :(得分:2)

我建议你保持同步安全记录(比如一个带有log4net的文本文件)并有一个调度进程来解析这些文件并将结果转储到数据库。

通过这种方式,您可以保持两个世界的最佳状态(1)使用真实且经过尝试的方法进行日志记录,以及(2)获取异步过程以将结果合并到数据库中。

答案 1 :(得分:1)

我建议将NLog及其Database-TargetAsyncWrapper结合使用。也许你也可以使用AspNetBufferingWrapper

答案 2 :(得分:0)

您可以使用log4netAdoNetAppender。但这个appender是同步的。你可以使用ADO.NET BeginInvoke / EndInvoke方法implement your own asynchronous appender。