Log4j2: не пишет логи в файл

105
17 февраля 2022, 02:50

Я подключил Log4j2

implementation 'org.springframework.boot:spring-boot-starter-log4j2'

и прописал следующие настройки:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
            <!-- Крутое, но бесцветное логирование-->
<!--            <PatternLayout pattern="%highlight{%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36}.%M():%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}"/>-->
        </Console>
        <RollingFile name="File" fileName="C:/Users/Mi/output.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz" immediateFlush="true">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
        <Logger name="org.apache.logging.log4j.filelogger" level="info" additivity="false">
            <AppenderRef ref="File"/>
        </Logger>
    </Loggers>
</Configuration>

В консоль всё отлично пишется, но в файл, почему-то, нет. Я ожидал, что логи будут писаться в файл по адресу C:/Users/Mi/output.log, файл автоматически создаётся, он открыт приложением (его нельзя удалить), но логи туда не пишутся. Подскажите, что не так?

Answer 1

Оказалось, что было достаточно включить аппендеры в один логер:

<Loggers>
    <Root level="info">
        <AppenderRef ref="Console"/>
        <AppenderRef ref="File"/>
        <AppenderRef ref="ErrorFile" level="error"/>
        <AppenderRef ref="WarnFile" level="warn"/>
    </Root>
</Loggers>
READ ALSO
Внедрение EJB в Сервлет java

Внедрение EJB в Сервлет java

Здравствуйте мой проект maven имеет 3 модуля 1)ear 2)ejb 3)web Как внедрить EJB сессионный бин из ejb модуля в сервлет модуля web?

95
Как вернуть из метода коллекцию

Как вернуть из метода коллекцию

Есть задание в котором нужно написать метод, который будет принимать массив и возвращать количество и отсортированную коллекцию уникальных...

77
Spring Data Jpa как получить объект по id?

Spring Data Jpa как получить объект по id?

Я новичок в Spring и поэтому не очень понимаю почему без танцев с бубнами я не могу просто взять и получить из таблицы объект по его id

136
Как работает итератор в HashSet java

Как работает итератор в HashSet java

В LinkedHashSet есть хедер и там итератор по проходит по связному спискуНо в HashSet нет связного списка

129