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

log4j 2 - konfigurationsproblem

Faktisk er dette en ligetil proces. To hovedklasser af Log4j 2 er som følger, som du skal importere sådan her:

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

Få nu en Logger forekomst ved at bruge denne kode.

    private static final Logger logger = LogManager.getLogger();

Bemærk, at jeg ikke specificerede klassenavnet til getLogger() metode som parameter. Log4j 2 finder det automatisk ud.

Nu kan du bruge en hvilken som helst af info(), trace(), debug(), warn(), error(), fatal() metode fra Logger klasse. Men for at få output fra alle disse metoder skal du bruge en XML-konfigurationsfil. Som standard producerer Log4j 2 kun output fra error() and fatal() metoder.

Konfigurationsfilen er som følger:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Appenders>
            <File name="MyCustomLogFile" fileName="/home/me/mylogfile.log">
                <PatternLayout>
                    <Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
                </PatternLayout>
            </File>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
            </Console>
        </Appenders>
        <Loggers>
            <Root level="all">
                <AppenderRef ref="MyCustomLogFile"/>
                <!--<AppenderRef ref="Console"/>-->
            </Root>
        </Loggers>
    </Configuration>

Gem denne fil med et hvilket som helst navn hvor som helst. Jeg bruger Log4j2.xml som navn. Nu skal du have denne fil til at blive lagt i classpath, hvilket du kan gøre ved at sende en systemegenskab, når du kører programmet som følger:

    java -Dlog4j.configurationFile=/path/to/xml/configuration/file/Log4j2.xml MyMainClass

Og du har gjort det. Logning sker med det samme på din konsol.

Særlige bemærkninger:

  • I XML-filen har jeg leveret 2 bilag:En fil og en konsol. Du kan se, at du blot skal fjerne kommentaren til den kommenterede AppenderRef tag for at få output i en fil i stedet for konsol.

  • Du kan også angive en miljøvariabel som en systemegenskab. Log4j 2 vil læse konfigurationsfilen fra miljøvariablen først og derefter i -D argument, hvis ikke fundet en miljøvariabel.

God fornøjelse med logning. :-)


sted log4j2.xml fil under src/main/resources . Det virker


du skal sætte din log4j2.xml ind i klassestien.

eller indstil "log4j.configurationFile" systemegenskaben til at tvinge til at bruge din log4j2.xml

Se venligst:http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfiguration


Java tag