La regola empirica per quanto riguarda la registrazione: "non è mai troppo tardi!"
Do you think it is advisable to try to add logging to this program
now? Or do you think that I'm too far along to try to fix this
problem?
Puoi iniziare con alcune registrazioni generiche, che sono agnostiche alla tua applicazione in quanto tale:
-
Registri ENTRY / EXIT: puoi aggiungere una dichiarazione di registrazione all'inizio di ogni metodo e in ogni punto di uscita al livello TRACE
. (La registrazione degli argomenti in / out è facoltativa)
public int myMethod(int input) {
logger.trace(String.format("+++ [%d]", input));
.
.
.
logger.trace(String.format("--- [%d]", output));
return output;
}
Questo può sembrare banale e benevolo all'inizio, ma se confronti un registro zero con una traccia di log TRACE
, saresti molto meglio con quest'ultimo. Aiuta anche a incapsulare i registri da un singolo metodo tra le dichiarazioni ENTRY
e EXIT
nel file di registro.
Può essere complicato aggiungere tali log in ogni metodo in assoluto , quindi puoi scegliere di essere un ninja e utilizzare la programmazione orientata all'aspetto per farlo più rapidamente: Come registrare automaticamente la voce / l'uscita dei metodi in Java?
- ECCEZIONI: puoi sostituire rapidamente tutte le tue dichiarazioni di
e.printStackTrace()
con un'istruzione di registrazione che inserisce la traccia dello stack nel file di registro.
Do you have any recommendations on how to go about doing it? I
honestly don't know where to start.
Supponendo che tu non voglia diventare un esperto nella registrazione e stai semplicemente cercando un modo per "loggare" il tuo codice prima della versione beta, puoi dare un'occhiata a questo tutorial rapido all'aggiunta di istruzioni di registro.
Do you have a recommendation for a logging system for Java?
Se vuoi iniziare rapidamente, utilizza log4j con PatternLayout
. Tutto ciò che serve è un semplice file .properties
e il JAR incluso nel tuo classpath per vedere i registri che rotolano.
Se vuoi valutare diverse librerie di logging, ma non hai il tempo giusto, allora ti suggerirei di iniziare con log4j ma usare slf4j wrapper su di esso. Quello che fa slf4j è che estrae la libreria di logging in modo che in seguito, puoi facilmente scambiare log4j per qualcos'altro, come logback , senza dover per cambiare le importazioni e la dichiarazione di registrazione sul tuo codice.
Do you have any good articles / best practices recommendations on what
to log and how to log it?
Alcuni suggerimenti in cima alla mia testa:
-
Dichiarare un oggetto logger statico per ogni classe: questo garantirà il corretto rilevamento della posizione di dove provengono le dichiarazioni del registro
final static Logger logger = Logger.getLogger(classname.class);
-
registra un messaggio INFO
per ogni operazione eseguita con successo da un metodo. Aiuta a non avere una vista a volo d'uccello sul codice e focalizzarsi su un solo metodo contemporaneamente quando si aggiungono i log per la funzionalità (ed è anche più veloce dato che è possibile deformare il proprio codice aggiungendo registri come una macchina!)
- Assicurati di registrare l'ECCEZIONE nel messaggio
ERROR
nel tuo blocco catch () - questo registrerà la traccia dello stack nel file di registro invece del solo messaggio
- Registra un
TRACE
o un INFO
appena prima di avviare operazioni che richiedono molto tempo, in modo che se un utente pedante sta guardando i log mentre il tuo programma è in esecuzione, lui / lei sarà tranquillizzato dal fatto che qualcosa -intensivo sta accadendo e il programma non si è arrestato in modo anomalo solo perché la registrazione si è interrotta per un po '
Registrazione felice! Siate certi che i vostri sforzi pagheranno .