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

Log4j Ejendomskonfigurationseksempel

Log4J er et open source-projekt, som giver udviklere mulighed for at udlæse logerklæringer med konfigureret granularitet. Konfigurationen kan vedligeholdes af konfigurationsfilerne (XML, Property). Log4J har tre hovedkomponenter:Loggere , Bilag og Layouts. Disse tre komponenter arbejder sammen for at hjælpe udviklere med at konfigurere Log4J til at udsende ønskede udsagn i givet format og mål. Fordelen ved log-udsagn frem for simple System.out.print er, at det giver dig mulighed for at definere, hvilke udsagn der bliver output, og forhindre nogle i ikke at logge.

1. Loggere

Loggere følger den hierarkiske navngivningsregel, som siger, at:

En logger siges at være en forfader til en anden logger, hvis dens navn efterfulgt af en prik er et præfiks for det efterkommere loggernavn. En logger siges at være en forælder til en børnelogger, hvis der ikke er nogen forfædre mellem ham selv og den efterkommer-logger

Rodloggeren er placeret øverst i hierarkiet og kalder den statiske Logger.getRootLogger metoden henter den. Alle andre loggere hentes ved deres navn:f.eks.:hvis loggernavnet er MySampleLogger, kan det hentes ved at ringe til Logger.getLogger(MySampleLogger.class);

2. Tillæg

Log4j tillader logforespørgsler at udskrive til flere destinationer. En outputdestination kaldes en tilføjelse. Hvert Appender-objekt har forskellige egenskaber tilknyttet, og disse egenskaber angiver det pågældende objekts opførsel.

  • layout:  Appender bruger Layout-objekterne og det konverteringsmønster, der er knyttet til dem, til at formatere logningsoplysningerne.
  • mål – Målet kan være en konsol, en fil eller et andet element afhængigt af appenderen.
  • niveau – Niveauet er påkrævet for at kontrollere, hvordan logmeddelelserne filtreres.
  • tærskel – Appender kan have et tærskelniveau tilknyttet uafhængigt af loggerniveauet. Appenderen ignorerer alle logningsmeddelelser, der har et niveau, der er lavere end tærskelniveauet.
  • filter – Filter-objekterne kan analysere logningsoplysninger ud over niveaumatching og beslutte, om logningsanmodninger skal håndteres af en bestemt Appender eller ignoreres.

Outputtet af en logsætning af logger A vil gå til alle appenderne i A og dens forfædre. Dette er betydningen af ​​udtrykket "bilagsadditivitet “. Men hvis en forfader til logger A , sig B , har additivitetsflaget sat til false, derefter A 's output vil blive dirigeret til alle appenderne i A og dets forfædre til og med B men ikke vedlæggene i nogen af ​​forfædrene til B . Loggere har deres additivitetsflag sat til true som standard.

3. Projektstruktur

Billedet nedenfor viser projektstrukturen.

Figur 1. Projektstruktur

4. Java-klasse

Nedenfor er klassen, der vil bruge Log4J til at udskrive logerklæringer.

HelloLog4JProperty.java

import org.apache.log4j.Logger;
/**
 * Class demonstrating Log4J property file configuration.
 */
public class HelloLog4JProperty {

    private static final Logger LOGGER = Logger.getLogger(HelloLog4JProperty.class);

    public static void main(String args[]) {
        LOGGER.info("Log4J property file testing...");
    }
}

5. Ejendomsfil

log4j.properties fil er en log4j-konfigurationsfil, som holder egenskaber i nøgleværdi-par. Som standard er LogManager leder efter en fil med navnet log4j.properties i KLASSESTIEN. Nedenfor er egenskabsfilen brugt til at konfigurere Log4J:

log4j.properties

#Set root logger level to INFO and its only appender to TestAppender.
log4j.rootLogger=INFO, TestAppender

# TestAppender is set to be a ConsoleAppender.
log4j.appender.TestAppender=org.apache.log4j.ConsoleAppender

# TestAppender uses PatternLayout.
log4j.appender.TestAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.TestAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

6. Fejlretningsniveauer

Nedenfor er beskrivelsen af ​​logniveauerne brugt i log4j.

ALLE – Alle niveauer inklusive tilpassede niveauer.
DEBUG – Angiver finkornede informationsbegivenheder, der er mest nyttige til at fejlsøge en applikation.
FEJL – Angiver fejlhændelser, der stadig kan tillade applikationen at fortsætte med at køre.
FATAL – Angiver meget alvorlige fejlhændelser, der formentlig vil føre til, at applikationen afbrydes.
INFO – Angiver informationsmeddelelser, der fremhæver applikationens fremskridt på grovkornet niveau.
OFF – Den højest mulige rang og er beregnet til at slå logning fra.
TRACE – Angiver mere detaljerede informationsbegivenheder end DEBUG.
ADVAR – Udpeger potentielt skadelige situationer.

En loganmodning på niveau L1 i en logger med niveau L2 er aktiveret, hvis L1>=L2. Denne regel er kernen i log4j. Det forudsætter, at niveauerne er bestilt. For standardniveauerne har vi ALL .

7. Maven Pom-fil

Nedenfor er pom.xml, som definerer afhængigheden

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>com.javacodegeeks</groupId>
    <artifactId>log4j-property</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <dependencies>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>
</project>

8. Output

Nedenfor er resultatet af at køre HelloLog4JProperty klasse

0 [main] INFO HelloLog4JProperty - Log4J property file testing...

Process finished with exit code

9. Download kildefilen

Dette var et eksempel på Log4J konfiguration ved hjælp af egenskabsfilen i java.logging

Java tag