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
Nedenfor er pom.xml, som definerer afhængigheden
pom.xml
Nedenfor er resultatet af at køre
Dette var et eksempel på 7. Maven Pom-fil
<?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
HelloLog4JProperty
klasse0 [main] INFO HelloLog4JProperty - Log4J property file testing...
Process finished with exit code
9. Download kildefilen
Log4J
konfiguration ved hjælp af egenskabsfilen i java.logging