Сколько журналов я должен сделать на производстве для SQLexCpetions?

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/7539

  •  16-10-2019
  •  | 
  •  

Вопрос

Я пишу небольшое приложение, ориентированное на базу данных в Java Swing, которое будет использоваться внутри в небольшой компании. У меня мало опыта в разработке приложений на уровне производства.

Я не использую ORM, всего лишь несколько простых методов, которые запускают запросы SQL с Java JDBC. На каждом методе, который получаю доступ к базе данных, я использую try-catch Заявление для SQLException а также IOException. Анкет Стоит ли мне делать какую -нибудь журнал здесь? Если я должен, сколько мне следует войти в систему? Пожалуйста, приведите мне примеры хорошей практики в этом случае.

Это было полезно?

Решение

Две основные вещи в производственной системе:

  1. Не взорвать журналы информацией, которая не интересна
  2. Разрешить повышение уровня журнала для устранения неполадок.

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

Кроме того - когда вы сообщаете об исключении, всегда убедитесь, что весь стек Trace + Внутренние исключения напечатаны.

Другие советы

ИМХО, вот самый минимум, который вы должны сделать. Я полагаю, вы используете Log4j.

try
{
   // open connection

   // begin transaction

   // my database stuff

   // commit transaction
}
catch (SQLException ex)
{
   log.Error("An error occured while ...: " + ex.Message, ex);
   // do stuff related to SQLException

   // rollback transaction
}
catch (IOExcpetion ex)
{
   log.Error("An error occured while ...: " + ex.Message, ex);
   // do stuff related to IOException

   // rollback transaction
}
catch (Exception ex)
{
    log.Error("An error occured while ...: " + ex.Message, ex);
    // manage this unhandled exception

    // rollback transaction
}
finally
{
   // close connection
}
Лицензировано под: CC-BY-SA с атрибуция
scroll top