多层次的MVC,应该在哪一层进行日志记录?

In which layer, should I do logging for MVC with many layers

我有一个 MVC 项目,它有模型、数据访问、业务和视图层。我打算使用 NLog 将异常记录到文本文件中。我不确定应该在哪一层记录错误,这是我的第一个问题。我读了一些建议在 View 层记录错误的博客。我不确定。

我认为最好的方法是使用 MVC。对于常见异常,您应该在一个地方进行日志记录,而您获得的唯一常见位置是顶级,在您的情况下是 MVC。

MVC 有特殊的错误处理程序,您应该 utilize/override 获得您想要的行为 + global.asax MVC 之外的东西的通用错误处理程序。与在其他地方进行复制相比,这将涵盖任何层中发生的异常。

如评论中所述,您也可以使用 Elmah。它几乎可以完成我所描述的操作,但自动地,您只需添加一个 Elmah.Mvc 包并将其设置为记录到一个文件。您需要注意不要暴露 elmah 端点,这样每个人都可以看到您的日志。