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

Hvorfor skriver Log4j2 ikke logfiler til en fil?

Dette er min konfiguration log4j2.xml med path to filesrc/com/tarasiuk/task_01/log/dataLogger.log :

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

    <Properties>
        <Property name="FORMAT_MESSAGE">
            %d{YYYY-MM-dd HH:mm:ss} [%t] Level:%-7p Class:%c{1}:%-5L - %msg%n
        </Property>

        <Property name="LOG_FILE">
            src/com/tarasiuk/task_01/log/dataLogger.log
        </Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${FORMAT_MESSAGE}" />
        </Console>

        <File name="File" fileName="${LOG_FILE}" append="false">
            <PatternLayout pattern="${FORMAT_MESSAGE}" />
        </File>
    </Appenders>

    <Loggers>
        <Logger name="org.apache.logging.log4j.test2" level="debug" additivity="false">
            <AppenderRef ref="File" />
        </Logger>

        <Root level="info">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

Struktur af mit projekt:

Hvad jeg gør:

  1. ændre path for at logge fil fra src/com/tarasiuk/task_01/log/dataLogger.log til com/tarasiuk/task_01/log/dataLogger.log – intet resultat.
  2. ændre level i <Logger> fra debug til info – intet resultat.

Logfiler udsendes til konsollen – det er ok. Men hvorfor Log4j2 skriver ikke logfiler to a file ?

Svar

Prøv med nedenstående bilag.

Det kan være, at det i dit tilfælde ikke er i stand til at hente stien fra ejendom, så jeg havde kun angivet navn. Så automatisk vil den oprette en fil på samme sti som din ansøgning.

<Appenders>
    <File name="dataLogger" fileName="dataLogger.log" append="false">
       <PatternLayout pattern="%level - %m%n"/>
    </File>
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="%level - %m%n"/>
    </Console>
  </Appenders>

Dette vil hjælpe dig.


Java tag