在视图中记录异常

本文关键字:异常 记录 视图 | 更新日期: 2023-09-27 18:29:14

我目前向用户显示一条自定义风格的错误消息,这是我在这篇文章之后构建的。这很好,但我想知道我应该如何在日志文件中记录这些错误。目前,我们已经实现了用于日志记录的log4net。

这是我的模板:

@model System.Web.Mvc.HandleErrorInfo
<div class="span3"></div>
<div class="span5">
    <div class="well">
        <h3>Oops!</h3>
        <div class="alert alert-info alert-block">
            <strong>An error has occurred</strong>
            <p>
                We have logged the incident for you.
            Should it continue to occur, please contact support via one of the following options
            </p>
            <br />
            <p class="pull-right"><a href="mailto:support@company.com">support@company.com</a></p>
            <address>
                <strong>Company Inc.</strong><br>
                Address 3<br>
                0055 Somewhere, Country<br>
                <abbr title="Phone">P:</abbr>
                +47 999 99 999
            </address>
        </div>
        <div class="alert alert-error alert-block">
            <strong>Exception details (@Model.ControllerName / @Model.ActionName)</strong>
            <p>
                @Model.Exception.Message
            </p>
        </div>
    </div>
</div>

Web.config:

<customErrors mode="On">
  <error statusCode="404" redirect="~/Error404/Index" />
</customErrors>

请注意,Error404视图有自己的控制器,并位于自己的视图文件夹中,而我的Error.cshtml视图没有——它与我的布局一起位于共享文件夹中。如有任何帮助,我们将不胜感激:)

在视图中记录异常

看看ELMAH。

我会说继续使用log4net进行日志记录。已经有log4net附加程序将记录到文件或数据库。这里唯一的问题是,要记录它,你必须知道它发生了。

如果您将ELMAH添加到项目中,它将捕获任何未处理的异常,并将这些异常记录到文件/db/email/您配置的任何文件中。

这个项目有nuget包,便于集成。我对它说得再多也不为过,我在写的每一个网络项目中都使用它。