Wie viel Protokollierung sollte ich bei der Produktion für SQLEXCPETIONs tun?
https://softwareengineering.stackexchange.com/questions/7539
-
16-10-2019 - |
Frage
Ich schreibe eine kleine datenbankzentrierte Anwendung in Java Swing, die intern in einem kleinen Unternehmen verwendet wird. Ich habe nicht viel Erfahrung mit der Entwicklung von Anwendungen auf Produktionsebene.
Ich benutze kein Orm, nur ein paar einfache Methoden, die SQL -Abfragen mit Java JDBC ausführen. Bei jeder Methode, die auf die Datenbank zugreift, verwende ich a try-catch
Aussage für SQLException
und IOException
. Soll ich hier eine Protokollierung machen? Falls ich sollte, wie viel sollte ich protokollieren? Bitte geben Sie mir Beispiele für gute Praxis in diesem Fall.
Lösung
Zwei wichtigste Dinge im Produktionssystem sind:
- Sprengen Sie die Protokolle nicht mit Informationen, die nicht interessant sind
- Ermöglichen Sie das Anheben des Protokollebens für die Fehlerbehebung.
Verwenden Sie eine Art Protokollierungsinfrastruktur. Wenn die Ausnahme während der auftreten kann normal Operation, melden Sie es in Debug -Ebene. Wenn es sich um ein echtes Problem handelt, melden Sie es in Fehlerebene. In beiden Fällen können Sie das System durch Erhöhen des Protokollebens beheben.
Außerdem - wenn Sie eine Ausnahme melden, stellen Sie immer sicher, dass die gesamte Stapelspur + innere Ausnahmen gedruckt werden.
Andere Tipps
IMHO, hier ist das Minimum, das Sie tun sollten. Ich nehme an, Sie verwenden 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
}