Buona tecnica di registrazione per piccoli progetti su Java [duplicato]

0

Quando codifico piccoli progetti, utilizzo spesso System.out.println per stampare informazioni preziose. È semplice, facile e mi dà informazioni. L'unico inconveniente che ho trovato è che non esiste un modo semplice per disabilitare parti di questo output per l'applicazione finita, tranne che per commentarle, che danneggia il mio codice. Quindi, mi piacerebbe sapere, c'è qualche tecnica di registrazione, che è semplice come System.out.println , ma può essere abilitata / disabilitata in qualche modo? Senza ulteriori configurazioni xml e simili. Perché tutto quello che ho guardato, sembrava troppo complesso e non merita lo sforzo per una piccola applicazione (1-2-3 schermi).

Grazie in anticipo.

    
posta dhblah 21.07.2013 - 09:54
fonte

3 risposte

3

C'è una via di mezzo tra System.out.println e una libreria di logging: scrivi il tuo oggetto che protegge i dettagli. Questo oggetto può essere configurato con una semplice proprietà di sistema:

class LogUtils {
    private boolean isEnabled = false;

    // TODO: constructor 

    public static void log(String msg) {
        if (isEnabled) { System.out.println(msg); }
    }
}

Il pericolo qui è che potresti voler aggiungere funzionalità come i livelli di registro (INFO, DEBUG, ERRORE). Se aggiungi funzionalità, sei sulla strada del "reinventare la ruota" e dovresti prendere in considerazione una libreria di registrazione adeguata.

    
risposta data 21.07.2013 - 14:36
fonte
3

È possibile utilizzare il logger integrato di JDK

link

È molto semplice da usare e configurare, ma flessibile (ad esempio i livelli di registrazione) quando vuoi che sia. Inoltre, non devi includere alcuna libreria di terze parti.

Questo esempio mostra due modi di usare il metodo log

import java.util.logging.Level;
import java.util.logging.Logger;

..........

private static final Logger logger = Logger.getLogger(Test.class.getName());

    private void setup(String val1) {
        logger.info("Entering method with value [" + val1 + "]");
        //Do something here
        try {
        //Do something here
        } catch (Exception e) {
            logger.log(Level.SEVERE, "Failed to prune the hedge", e);
        }
    }

I livelli di registrazione sono organizzati in base a una gerarchia: l'abilitazione della registrazione per un livello specifico implica che la registrazione verrà eseguita per quel livello e per i livelli "superiori". Per esempio. l'abilitazione di Level.INFO registrerà tutti i messaggi registrati con i messaggi INFO, WARNING e SEVERE.

Se si desidera disattivare la registrazione a un livello specifico, è possibile configurarlo in un file delle proprietà. Per esempio. un file di configurazione con solo l'output della console e la registrazione abilitata per Level.WARNING e precedenti appariranno come

handlers = java.util.logging.ConsoleHandler
.level = WARNING
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Questo file deve essere incluso con una proprietà di sistema quando si esegue il programma

   java -Djava.util.logging.config.file -cp <your classpath> <your main class>
    
risposta data 21.07.2013 - 18:34
fonte
2

Un piccolo progetto potrebbe crescere e il logging diventerà poco maneggevole se non adeguatamente curato. Non sarà una seccatura impostare un logger se hai una configurazione che preferisci a portata di mano. Inizialmente, potrebbe volerci un po 'di tempo per configurare il logger secondo i vostri desideri, ma successivamente è sufficiente copiare la configurazione nella giusta directory del progetto.

Puoi controllare questi pochi strumenti di registrazione popolari, Log4j e Logback. È possibile utilizzare un abstract del logger come SLF4J in cui è possibile passare da diverse implementazioni del registratore. Ciò consente di risparmiare tempo quando si verifica una situazione in cui viene fornita o consentita solo una specifica libreria di registrazione. In tale istanza, si configurano solo gli abstract del logger come SLF4J per utilizzare il logger disponibile.

    
risposta data 21.07.2013 - 13:08
fonte

Leggi altre domande sui tag