Почему Log4j2 не записывает журналы в файл?

#java #log4j2

#java #log4j2

Вопрос:

Это моя конфигурация log4j2.xml с path to file src/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>
  

Структура моего проекта:
введите описание изображения здесь

Что я делаю:

  1. измените path на файл журнала с src/com/tarasiuk/task_01/log/dataLogger.log на com/tarasiuk/task_01/log/dataLogger.log — никакого результата.
  2. измените level в <Logger> с debug на info — никакого результата.

Журналы выводятся на консоль — это нормально. Но почему Log4j2 не записывает журналы to a file ?

Ответ №1:

Попробуйте с помощью приложения ниже.

Возможно, в вашем случае он не может получить путь из свойства, поэтому я указал только имя. Таким образом, он автоматически создаст файл по тому же пути, что и ваше приложение.

 <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>
  

Это поможет вам.

Комментарии:

1. @n199a теперь просто попробуйте использовать статический путь. Просто скопируйте абсолютный путь task01/log/dataLogger.log и введите в поле filename. Если это сработает, попробуйте использовать свойство.

2. log4j2.xml находится в /task_01/src/log4j2.xml и файл «Регистратор данных. журнал’ был успешно создан в /task_01/src/dataLogger.log. Но мне нужен файл ‘dataLogger. журнал’ должен быть создан в /src / com / tarasiuk /task_01/log / dataLogger.log на моем Ubuntu.

3. абсолютный путь /home/n199a/Documents/java/workspace/2_epam_industrial_programming_in_java/task_01/src/com/tarasiuk/task_01/log/dataLogger.log — это сработало. Но нужно в /src/com/tarasiuk/task_01/log/dataLogger.log

4. Теперь попробуйте с ../src/com/tasiuk

5. это волшебно, просто нажмите на файл dataLogger.log в IDEA -> copy -> Path from content root и вставьте log4j2.xml . Результат — src/com/tarasiuk/task_01/log/dataLogger.log . странно, когда я набрал путь руками — это не сработало. Скопировал — это сработало. Это сработало! Спасибо