Sto lavorando a un progetto e sto attualmente lavorando sull'implementazione di alcuni registri con log4j ed ero curioso di sapere come dovrei procedere per implementare i registri. Le due implementazioni sto calci in giro sono i seguenti:Registrazione Java con classi astratte
Prima Opzione
Usa registro unico dalla classe di super per quella classe e tutte le classi secondarie:
public abstract class AbstractFoo {
protected static Log LOG = LogFactory.getLog(AbstractFoo.class);
...
}
public class Foo extends AbstractFoo {
public void someMethod() {
LOG.info("Using abstract log");
}
}
Seconda Opzione
Utilizzare i registri individuali per ogni classe, super e sottotitoli:
public abstract class AbstractFoo {
private static Log LOG = LogFactory.getLog(AbstractFoo.class);
...
}
public class Foo extends AbstractFoo {
private static Log LOG = LogFactory.getLog(Foo.class);
public void someMethod() {
LOG.info("Using own log");
}
}
Cosa ha più senso e perché?
Finora ho visto due approcci: logger statici (come nella domanda) e logger non statici (come nel tuo esempio). I logger statici non sono una soluzione migliore (un'istanza di logger per tutte le istanze)? I logger statici –
sono migliori se sono uguali per tutte le istanze. Nel caso astratto della classe, la classe delle istanze non sono tutte uguali. –
Mi piace, sembra un buon modo per combinare entrambe le opzioni.Si finisce con un singolo log ma si lega alla classe corretta. +1 – shuniar