在ASP.NET WebApplication中记录错误

时间:2011-04-03 19:21:18

标签: c# asp.net error-handling error-logging

如果发生异常,则应将其记录到文本文件中。并且应该将用户重定向到向用户解释错误的页面。

我从哪里开始?

3 个答案:

答案 0 :(得分:4)

我建议使用log4net。这很容易实现。

首先,download log4net。解压缩,然后在项目中添加对log4net.dll的引用。

在根文件夹中创建名为log4net.config的基本配置文件。这将在Web根目录外的Logs文件夹中记录按日期命名的日志文件中的错误。

<?xml version="1.0"?>
<log4net debug="false">
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <param name="DatePattern" value="yyyy-MM-dd'.log'" />
        <param name="File" value="..\\Logs\\" />
        <param name="AppendToFile" value="true" />
        <param name="MaxSizeRollBackups" value="30" />
        <param name="MaximumFileSize" value="100MB" />
        <param name="RollingStyle" value="Date" />
        <param name="StaticLogFileName" value="false" />
        <param name="CountDirection" value="-1" />
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
        </layout>
        <evaluator type="log4net.Core.LevelEvaluator">
            <threshold value="DEBUG" />
        </evaluator>
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="RollingFileAppender" />
    </root>
</log4net>

Properties\AssemblyInfo.cs文件中,添加以下行。这将在您的应用程序启动时自动从配置文件配置log4net。

[assembly: XmlConfigurator(ConfigFile = "./Log4net.config", Watch = true)]

要捕获错误并记录错误,您需要将以下内容添加到Global.asax.cs

private static readonly ILog m_Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

protected void Application_Error(object sender, EventArgs e)
{
    // Get the error
    Exception exception = Server.GetLastError();

    // Log the error to a text file
    m_Logger.Fatal("Unhandled application error", exception);

    // Redirect to error page
    Response.Redirect("~/Error.aspx");
}

有一些步骤可以让它工作,但它们都很容易做到,一旦log4net到位,您可以轻松地在应用程序的其他地方添加日志记录(而不是仅记录未处理的异常)。 / p>

答案 1 :(得分:3)

看看ELMAH - http://code.google.com/p/elmah/ - 如果您正在寻找能够执行其中一部分的解决方案(日志记录)。

在您的应用程序中考虑使用其他部分的自定义错误。例如,ASP.net Custom Errors Loggin

答案 2 :(得分:1)

Microsoft模式和实践团队开发了一组应用程序块,可以在构建名为Enterprise Library的.net应用程序时解决常见问题。他们有一个名为Logging Application Block的日志记录块。还有另一个用于封装异常处理的块,称为异常处理块。

我建议您查看Logging Application块来处理日志记录。

Enterprise Library 4.0