2017-02-04 6 views
0

Я пытаюсь реализовать некоторые протоколирования с помощью log4j 2. Выход на консоль в порядке, но когда я пытаюсь записать некоторые журналы в файл, я не могу это сделать.Log4J 2 не записывается в файл

Мои pom.xml:

<dependencies> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-api</artifactId> 
      <version>2.8</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-core</artifactId> 
      <version>2.8</version> 
     </dependency> 
    </dependencies> 

Мои log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration monitorInterval="60"> 
    <Properties> 
     <Property name="log-path">logs</Property> 
     <Property name="archive">${log-path}/archive</Property> 
    </Properties> 
    <Appenders> 
     <Console name="Console-Appender" target="SYSTEM_OUT"> 
      <PatternLayout> 
       <pattern> 
        [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 
       </pattern>> 
      </PatternLayout> 
     </Console> 
     <File name="File" fileName="${log-path}/xmlfilelog.log" immediateFlush="true" > 
      <PatternLayout> 
       <pattern> 
        [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 
       </pattern> 
      </PatternLayout> 
     </File> 
    </Appenders> 
    <Loggers> 
     <Logger name="les.dam" level="trace"> 
      <AppenderRef ref="File" level="trace"/> 
     </Logger> 
     <Root level="trace"> 
      <AppenderRef ref="Console-Appender"/> 
     </Root> 
    </Loggers> 
</Configuration> 

я использую log4j следующим образом:

private static Logger logger = LogManager.getLogger(); 
logger.debug("This is a debug message"); 
logger.info("This is an info message"); 
logger.warn("This is a warn message"); 
logger.error("This is an error message"); 
logger.fatal("This is a fatal message"); 

Класс, где я использую регистратор находится под les.dam пакета.

Конфигурация xml находится под управлением src/main/resources.

Папка журналов находится на том же уровне, что и исходная папка.

ответ

0

Ваша конфигурация выглядит нормально. Одна из возможных причин заключается в том, что файл конфигурации не найден и конфигурация по умолчанию (только ошибки в консоли).

Чтобы проверить, смените конфигурацию, начиная с <Configuration status="trace" monitorInterval="60">. Это приведет к выводу на консоль внутреннего журнала log4j2.

Ваш файл конфигурации log4j2.xml находится в src/main/resources? - update: спасибо за обновление, так что это да, это хорошо.


Можете ли вы попытаться настроить файл appender с абсолютным путем сначала?

Можете ли вы показать полное имя пакета класса, выполняющего ведение журнала?

+0

Да, конфигурация находится в src/main/resources. Я пробую трассировку отладки и даю вам обратную связь. –

+0

Можете ли вы сначала настроить конфигурацию файла с абсолютным путем? Также, пожалуйста, покажите имя пакета класса, который регистрируется. –

0

Вы должны проверить, что log4j2 использует log4j2.xml, который вы предоставляете, а не конфигурацию по умолчанию.

  1. Изменение log4j2.xml.

статус конфигурации = "след" monitorInterval = "60"

Затем проверьте вывод на консоль.

  1. Изменить шаблон Pattern-AppenderLayout.

% d {YYYY-MM-дд чч: мм: СС.ссс} [% -5level] [% т]% С {1} -% тзд% н

Тогда проверьте выход консоли.

Если log4j использует log4j2.xml, проверьте конфигурацию FileAppender https://logging.apache.org/log4j/2.x/manual/appenders.html#FileAppender.

Если log4j не использует log4j2.xml, https://logging.apache.org/log4j/2.x/manual/configuration.html. -Dlog4j.configurationFile = src/main/resources/log4j2.xml