Log4J in una classe di metodi statici

di il
2 risposte

Log4J in una classe di metodi statici

Salve a tutti del forum,
in questi giorni sto effettuando un'upgrade alle mie librerie di classi sostituendo il System.out.println e affini utilizzando il log4j.

Per le classi standard è tutto ok con l'applicazione del logger.

Ora mi trovo con una classe che in realtà ha solo metodi statici senza costruttore.

Si può applicare il logger a classi aventi solo metodi statici?

Saluti

2 Risposte

  • Re: Log4J in una classe di metodi statici

    cnesan ha scritto:


    Si può applicare il logger a classi aventi solo metodi statici?
    Ci sono tipicamente due approcci: tenere il campo dell'oggetto "logger" come static ("di classe") o non-static ("di istanza"). Poi il livello di accesso ... dipende, ma tipicamente è private o al limite protected.
    Ci sono pro e contro sia per static che non-static. E dipende anche se ci possono essere "grane" a livello di classloading.

    Questo spiega molto bene la questione: When Static References to Log objects can be used

    E comunque se è una classe di "utilità" con solo metodi statici, bisogna anche vedere SE ha senso fare del logging. Cosa fanno i metodi? Da chi saranno usati? Solo da te? Da tuoi colleghi? Da mezzo mondo?
    La ben nota Apache Commons Lang ha moltissimi metodi di utilità ma NON fa "logging" e non ha dipendenze verso API di logging. La Commons Lang può essere usata infatti in contesti molto ben differenti e comunque le sue utilità sono piccole e ben definite (e tra l'altro ben testabili con unit-test), quindi fare del logging sarebbe quasi sicuramente un "peso" inutile.
  • Re: Log4J in una classe di metodi statici

    Grazie per la risposta,
    sto leggendo il link che mi hai passato che è molto interessante.

    - La classe utility nasce da una collezione di metodi utilizzati da diverse classi che feci.
    - Il metodo ha una classe che è contenuto in un package tutto suo.
    - I metodi statici sono molto semplici ossia "parametri di ingresso -> Processo -> ritorno" quindi è lasciato al metodo chiamante la gestione del ritorno/eccezioni/etc.

    Tra tutti i metodi, radunati sotto la classe utility del package ns.utilities, esiste un solo metodo che utilizza i metodi statici della classe utility stessa.

    Proprio a causa del fatto che, in questo metodo, possono verificarsi delle anomalie durante l'elaborazione ciclica dei file, avevo pensato di applicare il logger.

    Il motivo è che, in caso di errore, il metodo passa al file successivo ma deve riportare i file saltati e il tipo di problema semprecchè sia richiesto dall'esterno.

    Di conseguenza non mi rimane che definire una nuova classe per inserire solo questo metodo e in questo caso utilizzare il logger. Dovrebbe andar bene, giusto?

    Grazie
Devi accedere o registrarti per scrivere nel forum
2 risposte