NLog - Как предотвратить сбои сайта, когда база данных выдает ошибку - PullRequest
0 голосов
/ 05 июля 2018

В настоящее время мы используем NLog на нашем веб-сайте для регистрации сообщений в базе данных MSSQL вместо обычного файла журнала.

Как настроить NLog на игнорирование ошибок базы данных вместо сбоя веб-сайта, когда база данных не может быть найдена?

1 Ответ

0 голосов
/ 09 июля 2018

Используя Try, предложение Catch часто используется для перехвата исключений базы данных из Недопустимые операции к проблемам с подключением . NLog, кажется, обрабатывает регистрацию исключений довольно эффективно, и я бы регистрировал их на Error Level . Ниже приведен мой производственный код (не совсем), и он, похоже, обрабатывает как ошибки уровня объекта, так и ошибки базы данных.

try
{
//Database Operations...
}
catch (SqlException sqlException)
{    
logger.Error(sqlException, "Sql exception caught while Importing.");
}
catch (NullReferenceException nullRefException)
                {
                    try
                    {
                        DBConnTxn.ConnectDB();
                        DBConnTxn.ExecuteUpdateQuery("ROLLBACK TRAN");
                        DBConnTxn.DisconnectDB();
                        logger.Error(nullRefException, "Null Reference exception caught while Importing.");
                    }
                    catch(Exception ex)
                    {
                        logger.Error(ex, "DB Roll Back Exception while importing.");
                        return false;
                    }
                    return false;
                }
                catch (ArgumentException argsException)
                {
                    try
                    {
                        DBConnTxn.ConnectDB();
                        DBConnTxn.ExecuteUpdateQuery("ROLLBACK TRAN");
                        DBConnTxn.DisconnectDB();
                    }
                    catch { }
                    logger.Error(argsException, "Null Reference exception caught while Importing.");
                    FullAutoMailSendHelper.ProcessErrors.Add("Data Import Error", argsException.Message);
                    return false;
                }
                catch (Exception ex)
                {
                    try
                    {
                        logger.Fatal(ex, "Unhandled Exception occurred");
                        DBConnTxn.ConnectDB();
                        DBConnTxn.ExecuteUpdateQuery("ROLLBACK TRAN");
                        DBConnTxn.DisconnectDB();
                    }
                    catch(Exception innerException) {
                    }

                    FullAutoMailSendHelper.ProcessErrors.Add("Data Import Error",ex.Message);
                    return false;
                }
...