在视图中记录异常

时间:2013-08-28 11:20:24

标签: c# asp.net-mvc asp.net-mvc-4 razor log4net

我目前向用户显示自定义样式的错误消息,我在this post之后构建了该消息。这工作正常,但我想知道我应该如何在日志文件中记录这些错误。目前我们已经实现了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视图则没有 - 它与我的布局一起驻留在共享文件夹中。任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

看看ELMAH

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

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

这个项目有nuget包,易于集成。我不能说它,我在我写的每个web项目中使用它。