Файл конфигурации Log4j2.xml не найден - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть проект, в котором я пытаюсь заставить Apache Log4j2 работать для входа в разные файлы. Мой проект - приложение Spring, и у меня есть файл конфигурации log4j2.xml в структуре проекта, но когда я запускаю проект, либо как Spring Boot, либо как война с Tomcat, кажется, что регистрация не происходит, кроме стандартного вывода по умолчанию.

Структура моего проекта:

-src
--main
---resources
----static
----templates
----application.properties
----log4j2.xml

Мой файл конфигурации:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE" monitorInterval="1800">

  <Properties>
        <Property name="logPattern">%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex</Property>
        <Property name="log-path">${sys:catalina.home}/logs</Property>
        <Property name="secondary_path">C:/TEMP/logs</Property>
    </Properties>

  <Appenders>

    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="${logPattern}"/>
    </Console> 

    <RollingFile name="FileAppenderInfo" fileName="${secondary_path}/stream-info.log" filePattern="${secondary_path}/stream-info-%d{yyyy-MM-dd}-%i.log" append="true" immediateFlush="true">
        <PatternLayout>
            <Pattern>${logPattern}</Pattern>
        </PatternLayout>
        <Policies>
            <SizeBasedTriggeringPolicy size="10MB"/>
        </Policies>
        <DefaultRolloverStrategy max="10"/>
    </RollingFile>


    <RollingFile name="FileAppenderError"  fileName="${secondary_path}/stream-error.log" filePattern="${secondary_path}/stream-error-%d{yyyy-MM-dd}-%i.log" append="true" immediateFlush="true">
        <PatternLayout>
            <Pattern>${logPattern}</Pattern>
        </PatternLayout>
        <Policies>
            <SizeBasedTriggeringPolicy size="10MB"/>
        </Policies>
        <DefaultRolloverStrategy max="10"/>
    </RollingFile>

  </Appenders>

  <Loggers>

    <Logger name="InfoLogger" level="error">
        <AppenderRef ref="FileAppenderInfo"/>
    </Logger>

    <Logger name="ErrorLogger" level="error">
        <AppenderRef ref="FileAppenderError"/>
    </Logger>

    <Root level="error">
      <AppenderRef ref="STDOUT"/>
    </Root>

  </Loggers>

</Configuration>

Я пытался найти решение, но не могу понять, в чем дело, я даже пытался создать новый проект и реализовать зависимости, файл XML и попытаться войти в код.

Мой код выглядит так:

private static final Logger log = LogManager.getLogger("InfoLogger");

log.info("POST HAS BEEN MADE");

Файл Pom:

<!-- Dependency for log4j2 -->

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

Я также пытался без использования тега версии.

Надеюсь, кто-нибудь может помочь Спасибо

1 Ответ

0 голосов
/ 02 ноября 2018

Два предложения:

1) Используйте имя пакета для указания регистратора.

   <Logger name="com.sample" level="error">
     <AppenderRef ref="FileAppenderInfo"/>
   </Logger>

2) Измените свой код, чтобы соответствовать регистратору

private static final Logger log = LogManager.getLogger (); // по умолчанию берем имя текущего класса

OR

LogManager.getLogger (Test.class.getName ()); // Укажите имя класса

...