Java >> Java tutorial >  >> Tag >> Log4j

Log4j 2 Kom godt i gang Eksempel

I denne vejledning viser vi dig, hvordan du konfigurerer Log4j2 med log4j2.xml fil og udskriv logningen til konsollen og en fil.

1. Introduktion

Udskrivning af beskeder til konsollen er en integreret del af udviklingstesten og fejlretningen af ​​et Java-program. Hvis udviklere arbejder på en serversideapplikation, hvor de ikke kan se, hvad der foregår inde på serveren, så er deres eneste synlighedsværktøj en log fil.

Uden logfiler kan udviklere ikke foretage nogen fejlfinding eller se, hvad der foregår inde i applikationen. Selvom Java har ret praktisk System.out.println() metoder til at udskrive noget på konsollen, som også kan omdirigeres til logfil, men ikke tilstrækkeligt til en virkelig Java-applikation.

Hvis udviklere kører et Java-program i Linux- eller Unix-baserede systemer, Log4j eller SLF4j eller en hvilken som helst anden logningsramme tilbyder mange flere funktioner, fleksibilitet og forbedring af meddelelseskvalitet, hvilket ikke er muligt ved hjælp af System.out.println() udsagn.

1.1 Hvad er Log4j2?

Log4j2 er den opdaterede version af det populære og indflydelsesrige Log4j-bibliotek, som er en enkel, fleksibel og hurtig Java-baseret logningsramme. Det er trådsikkert og understøtter internationalisering. Vi har hovedsageligt 3 komponenter at arbejde med Log4j :

  • Logger :Den bruges til at logge meddelelserne.
  • Tillæg :Det bruges til at offentliggøre logningsoplysningerne til destinationen som filen, databasen, konsollen osv.
  • Layout :Det bruges til at formatere logoplysninger i forskellige stilarter.

1.1.1 Log4j2 Logger Class

Logger klasse giver metoderne til logningsprocessen. Vi kan bruge LogManager.getLogger() metode til at hente Logger objekt. Syntaksen er angivet nedenfor:

static Logger log = LogManager.getLogger(YourClassName.class);

Logger klasse har 5 forskellige logningsmetoder, som bruges til at udskrive status for en applikation:

Beskrivelse Metodesyntaks
debug(Objektmeddelelse) Det bruges til at udskrive meddelelsen med niveauet org.apache.logging.log4j.Level.DEBUG . offentlig void debug(Objektmeddelelse)
fejl(Objektmeddelelse) Det bruges til at udskrive meddelelsen med niveauet org.apache.logging.log4j.Level.ERROR . offentlig ugyldig fejl (Objektmeddelelse)
info(Objektmeddelelse) Det bruges til at udskrive meddelelsen med niveauet org.apache.logging.log4j.Level.INFO . offentlig ugyldig info(Objektmeddelelse)
fatal(Objektmeddelelse) Det bruges til at udskrive meddelelsen med niveauet org.apache.logging.log4j.Level.FATAL . offentlig ugyldig fatal(Objektmeddelelse)
advarsel(Objektmeddelelse) Det bruges til at udskrive meddelelsen med niveauet org.apache.logging.log4j.Level.WARN . offentlig void warn(Objektmeddelelse)
trace(Objektmeddelelse) Det bruges til at udskrive meddelelsen med niveauet org.apache.logging.log4j.Level.TRACE . offentlig ugyldig sporing (Objektmeddelelse)

For at opsummere er prioritetsniveauet angivet nedenfor.

Trace < Debug < Info < Warn < Error < Fatal

Hvor org.apache.logging.log4j.Level.FATAL har den højeste prioritet og org.apache.logging.log4j.Level.Trace den laveste .

1.1.2 Log4j2 Appender Interface

Appender er en grænseflade, som primært er ansvarlig for at udskrive logningsmeddelelserne til de forskellige destinationer såsom konsol, filer, sockets, database osv. I Log4j2 vi har forskellige typer Appender implementeringsklasser.

Fig. 1:Log4j2 Appenders

1.1.3 Log4j Layout Klasse

Layout komponent angiver det format, som log-sætningerne skrives ind i destinationslageret af Appender . I Log4j2 vi har forskellige typer Layout implementeringsklasser.

Fig. 2:Log4j2 Layout

1.2 Hvorfor foretrækker Log4j2 frem for System.out.println?

Nedenfor er nogle af grundene, som er nok til at forstå begrænsningen ved at bruge System.out.println() :

  • Enhver logningsramme inklusive giver udviklere mulighed for at logge fejlfindingsoplysninger med et logniveau, der kan bruges som filtreringskriterier, dvs. man kan deaktivere meddelelsen, der tilhører et bestemt logniveau. For eksempel ville udviklere være mere bekymrede for at se WARN beskeder end DEBUG beskeder i produktionsmiljøet
  • Loggeramme kan producere bedre output og metadata, som hjælper med at fejlfinde og fejlfinde. For f.eks. Log4j2 gør det muligt at udskrive formateret output ved at angive et formateringsmønster, dvs. ved at bruge PatternLayout man kan inkludere et tidsstempel, klassenavn osv.

Åbn nu Eclipse Ide, og lad os begynde at bygge applikationen!

2. Log4j2 Kom godt i gang Eksempel

Nedenfor er de trin, der er involveret i udviklingen af ​​denne applikation.

2.1 Anvendte værktøjer

Vi bruger Eclipse Kepler SR2, JDK 8 og Log4j2 Jar. Når det er sagt, har vi testet koden mod JDK 1.7, og det fungerer godt.

2.2 Projektstruktur

Lad os først gennemgå den endelige projektstruktur, hvis du er i tvivl om, hvor du skal oprette de tilsvarende filer eller mappe senere!

Fig. 3:Ansøgningsprojektstruktur

2.3 Projektoprettelse

Dette afsnit vil demonstrere, hvordan man opretter et Java-baseret Maven-projekt med Eclipse. I Eclipse IDE skal du gå til File -> New -> Maven Project .

Fig. 4:Opret Maven Project

I vinduet New Maven Project vil det bede dig om at vælge en projektplacering. Som standard er "Brug standardarbejdspladsplacering ’ vil blive valgt. Vælg "Opret et simpelt projekt (spring over arketypevalg) ' afkrydsningsfeltet og klik bare på næste knap for at fortsætte.

Fig. 5:Projektdetaljer

Den vil bede dig om at 'Indtast gruppen og artefakt-id'et for projektet ’. Vi vil indtaste detaljerne som vist på billedet nedenfor. Versionsnummeret vil som standard være:0.0.1-SNAPSHOT .

Fig. 6:Arketypeparametre

Klik på afslut og oprettelsen af ​​et maven-projekt vil blive afsluttet. Hvis du observerer, har den downloadet maven-afhængighederne og en pom.xml fil vil blive oprettet. Den vil have følgende kode:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>Log4j2Example </groupId>
	<artifactId>Log4j2Example </artifactId>
	<version>0.0.1-SNAPSHOT</version>
</project>

Vi kan begynde at tilføje de afhængigheder, som udviklere ønsker som Log4j2, Junit osv. Lad os begynde at bygge applikationen!

3. Applikationsbygning

Nedenfor er de trin, der er involveret i udviklingen af ​​denne applikation.

3.1 Maven-afhængigheder

I dette eksempel bruger vi den mest stabile Log4j2-version for at opsætte logningsrammerne. Den opdaterede filen vil have følgende kode:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>Log4j2Example</groupId>
	<artifactId>Log4j2Example</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.8.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<version>2.8.2</version>
		</dependency>
	</dependencies>
</project>

3.2 Java-klasseoprettelse

Lad os oprette de nødvendige Java-filer. Højreklik på src/main/java mappe, New -> Package .

Fig. 7:Java-pakkeoprettelse

Et nyt pop-vindue åbnes, hvor vi indtaster pakkenavnet som:com.jcg.logging .

Fig. 8:Java-pakkenavn (com.jcg.logging)

Når pakken er oprettet, skal vi oprette implementeringsklassen. Højreklik på den nyoprettede pakke, New -> Class .

Fig. 9:Java-klasseoprettelse

Et nyt pop-vindue åbnes og indtast filnavnet som:Log4j2Example . Implementeringsklassen vil blive oprettet inde i pakken:com.jcg.logging .

Fig. 10:Java-klasse (Log4j2Example.java)

3.2.1 Implementering af hjælpeklasse

Lad os skrive et hurtigt Java-program og skrive logfilerne i konsollen og derefter i en eksempelfil ved at bruge Log4j2 konfiguration. Tilføj følgende kode til det:

Log4j2Example.java

package com.jcg.logging;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Log4j2Example {

	private static final Logger LOG = LogManager.getLogger(Log4j2Example.class);

	public static void main(String[] args) {
		
		LOG.debug("This Will Be Printed On Debug");
		LOG.info("This Will Be Printed On Info");
		LOG.warn("This Will Be Printed On Warn");
		LOG.error("This Will Be Printed On Error");
		LOG.fatal("This Will Be Printed On Fatal");

		LOG.info("Appending string: {}.", "Hello, World");
	}
}

3.3 Log4j-konfigurationsfil

Log4j2 vil normalt blive konfigureret ved hjælp af en egenskabsfil eller XML-fil. Så når logerklæringerne er på plads, kan udviklere nemt kontrollere dem ved hjælp af den eksterne konfigurationsfil uden at ændre kildekoden. log4j2.xml filen er en Log4j2 konfigurationsfil, som holder egenskaber i nøgleværdi-par. Som standard er LogManager leder efter en fil med navnet log4j2.xml i CLASSPATH .

For at konfigurere logningsrammerne skal vi implementere en konfigurationsfil, dvs. log4j2.xml og sæt den ind i src/main/resources folder. Tilføj følgende kode til det:

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">
    <Properties>
        <Property name="basePath">../Log4j2Example/logs</Property>
    </Properties>
    <Appenders>
        <!-- File Appender -->
        <File name="FILE" fileName="${basePath}/logfile.log" append="true">
            <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n" />
        </File>
        <!-- Console Appender -->
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="com.jcg" level="debug" />
        <Root level="info">
            <AppenderRef ref="STDOUT" />
            <AppenderRef ref="FILE" />
        </Root>
    </Loggers>
</Configuration>

4. Kør programmet

For at køre programmet skal du højreklikke på Log4j2Example klasse, Run As -> Java Application . Udviklere kan fejlsøge eksemplet og se, hvad der sker efter hvert trin. God fornøjelse!

Fig. 11:Kør applikation

5. Projektdemo

Når vi vil udføre eksemplet, vil konsoloutputtet og prøvelogfilen se ud som følger.

Fig. 12:Log-output

Det er alt for dette indlæg. God læring!!

6. Konklusion

Det er alt for at få udviklerne i gang med Log4j2-eksemplet. Jeg håber, at denne artikel tjente dig, hvad end du ledte efter. Udviklere kan downloade eksempelapplikationen som et Eclipse-projekt i afsnittet Downloads.

7. Download Eclipse Project

Dette var et eksempel på Log4j2 Example.core java Java java 7 Java 8 log4j maven

Java tag