Ведение журнала ошибок в веб-приложении ASP.NET - PullRequest
1 голос
/ 03 апреля 2011

Если возникает исключение, оно должно быть зарегистрировано в текстовом файле.И что пользователь должен быть перенаправлен на страницу, которая объясняет ошибку пользователю.

С чего начать?

Ответы [ 3 ]

4 голосов
/ 04 апреля 2011

Я бы рекомендовал использовать log4net.Это очень легко получить.

Во-первых, загрузить log4net .Разархивируйте его и добавьте ссылку на log4net.dll в свой проект.

Создайте базовый конфигурационный файл с именем log4net.config в корневой папке.Это позволит регистрировать ошибки в файлах журналов, названных по дате, в папке «Журналы» вне корневого веб-каталога.

<?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 будет на месте, вы можете легко добавить журналирование в другом месте вашего приложения (вместо того, чтобы регистрировать необработанные исключения).*

3 голосов
/ 03 апреля 2011

Посмотрите на ELMAH - http://code.google.com/p/elmah/ - если вы ищете решение, которое выполнит часть этого (ведение журнала).

Изучение использования пользовательских ошибок в вашем приложении для другой части. Например, Журнал пользовательских ошибок ASP.net

1 голос
/ 03 апреля 2011

Microsoft Patterns and Practices Team разработала группу блоков приложений, которые решают типичные проблемы при создании приложений .net, которые называются Enterprise Library.У них есть блок для регистрации, называемый Блок приложения регистрации.Существует еще один блок для инкапсуляции вашей обработки исключений, который называется блоком обработки исключений.

Я бы порекомендовал посмотреть на блок приложения ведения журнала для обработки вашего ведения журнала.

...