JavaRush /Java Blog /Random-IT /Colleghiamo il logging al nostro progetto JavaRush (slf4f...
Дмитрий Яковенко
Livello 35
Москва

Colleghiamo il logging al nostro progetto JavaRush (slf4f e log4j)

Pubblicato nel gruppo Random-IT
Puoi leggere come collegare Maven al tuo progetto JavaRush in questo mio articolo . Quanto segue presuppone che tu sappia come farlo. Se vogliamo usare slf4j, allora abbiamo bisogno di una dipendenza:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>
Dopodiché facciamo:
public static void main(String[] args) throws IOException {
    Logger logger = LoggerFactory.getLogger(Solution.class);
    logger.info("hello world!");
}
E otteniamo l'errore:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Il che è generalmente logico. slf4j è un wrapper, ma cosa lo abbiamo avvolto? Niente? Bene, abbiamo ricevuto un errore. È possibile racchiuderlo in uno dei seguenti: log4j, util.logging, NOP, System.err, JCL, logback. Maggiori dettagli nelle istruzioni originali . Diamo un'occhiata all'esempio di log4j e System.err: 1) Iniziamo con qualcosa di semplice, con System.err . Per fare ciò, aggiungi questo (slf4j-simple) alla dipendenza precedente (slf4j-api).
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.30</version>
</dependency>
Prendiamo le stesse versioni, dal 10 maggio 2021 è 1.7.30. Se prendi dipendenze da https://mvnrepository.com/ , non dimenticare di rimuoverle
<scope>test</scope>
Altrimenti, i tuoi log funzioneranno solo nei test. 2) Ora proviamo a configurare log4j , per questo dobbiamo aggiungere 2 dipendenze: log4j stesso e un livello tra slf4j e log4j (slf4j-log4j12). Sembra questo:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
È chiaro che dobbiamo rimuovere (slf4j-simple) in modo che slf4j non si confonda su con quale logger dovrebbe funzionare. E lascia (slf4j-api), poiché questo è slf4j. Per quanto riguarda le 2 dipendenze aggiunte. log4j stiamo aggiungendo quello vecchio (da maggio 2012, non so perché, potete sperimentarne altri). La sua versione è 1.2.17. Affinché slf4j funzioni con esso, è necessario un livello appropriato: slf4j-log4j12, dove gli ultimi caratteri (12) indicano la versione log4j. In questo caso, la versione di slf4j-api e slf4j-log4j12 dovrebbe essere la 1.7.30, l'ultima stabile al momento. Dopo aver collegato le dipendenze e aggiornato il progetto Maven. Affinché log4j funzioni, sono necessarie altre 2 cose: 1) Impostare un file di configurazione. Leggiamo, selezioniamo, copiamo. 2) Leggi la configurazione di log4j prima del lavoro:
PropertyConfigurator.configure("d:\\Java\\JavaRushTasks\\4.JavaCollections\\log4j.properties");
Bene, o dove hai il file. Se vuoi vedere tutti i registri, non dimenticare di impostare il livello di registrazione su TUTTI. Aggiungiamo al curriculum: log4j e slf4j. Sei favolosa! Se ti è stato d'aiuto, metti mi piace, iscriviti, suona il campanello!)))
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION