我有一个运行良好的MVC3应用程序。我想在数据库中添加一些日志记录,但我希望异步发生日志记录。基本上,在控制器方法的某个地方,我想调度数据库日志代码来执行它需要做的事情,让它做到这一点,而不会阻止控制器以快乐的方式运行。
从控制器的角度来看,它并不关心数据库写入是否成功失败或延迟。
我认为我不想使用AsyncController
因为我真的不关心回调。我需要什么?
答案 0 :(得分:2)
我建议你保持同步安全记录(比如一个带有log4net的文本文件)并有一个调度进程来解析这些文件并将结果转储到数据库。
通过这种方式,您可以保持两个世界的最佳状态(1)使用真实且经过尝试的方法进行日志记录,以及(2)获取异步过程以将结果合并到数据库中。
答案 1 :(得分:1)
我建议将NLog及其Database-Target与AsyncWrapper结合使用。也许你也可以使用AspNetBufferingWrapper。
答案 2 :(得分:0)
您可以使用log4net和AdoNetAppender。但这个appender是同步的。你可以使用ADO.NET BeginInvoke / EndInvoke方法implement your own asynchronous appender。