Sto iniziando con un nuovo progetto e ho fatto alcune considerazioni sulla registrazione. Ho sempre usato il modello in cui ogni classe, in cui si fa la registrazione, ha un proprio Logger statica:Registrazione Java - Wrapper?
private static final Logger logger = Logger.getLogger(LoggingInterceptor.class);
io non piace molto questo approccio come devo copiare questa linea in ogni classe dove registrerà qualcosa . Ho preso in considerazione l'utilizzo dell'approccio Android in cui è presente la classe Log con i suoi metodi statici da registrare. Ho iniziato a cercare su internet un approccio simile fatto da qualcun altro, ma non ho trovato nulla.
Quindi la mia domanda è: quali potrebbero essere gli svantaggi di questo approccio?
Non riesco a pensare ad alcuno ma piuttosto ad alcuni vantaggi, poiché segue il modello DRY. Le diverse categorie potrebbero essere gestite come in Android con 'tag', che sono parametri dei metodi di registro statico. Per esempio:
Log.debug(tag, message, exception);
La classe Log sé sarebbe quindi utilizzare un quadro comune di registrazione, come Log4j o addirittura SLF4J.
Quindi sono interessato alle vostre opinioni.
FWIW, Play Framework 2 utilizza un approccio simile. – smk
"[...] segue lo schema DRY"? Al contrario! Il tuo approccio suggerito ti obbliga a specificare sempre un tag, mentre il recupero di un logger per la classe (o la categoria) in una variabile finale statica lo specifica solo una volta. Cosa succede quando decidi di cambiare la categoria? – Seelenvirtuose
Sì, potrebbe essere un punto. Ma cosa succede se si registra una dichiarazione per un altro tag? Considerando che i tag non vengono utilizzati solo per specificare la classe in cui viene inserito il log, ma forse un sottosistema del sistema. Quindi potresti voler raggruppare alcuni registri di sottosistemi realizzati in più classi. – homedom