Как фильтровать информацию в лог файлах?

создал файл log4j2, сделал генерацию 3-х файлов, в один файл записывается только error(что мне и надо), в другие файлы, записывается всё, и error и info и debug

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
    <appenders>
        <File name="MyFile" fileName="logs/exceptions.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
        <File name="MyFile2" fileName="logs/search.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
        <File name="MyFile3" fileName="logs/input_errors.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </appenders>

    <loggers>
        <root level="all">
            <appender-ref ref="MyFile" level="debug"/>
            <appender-ref ref="MyFile2" level="info"/>
            <appender-ref ref="MyFile3" level="error"/>
        </root>
    </loggers>
</configuration>

Ответы (1 шт):

Автор решения: Aziz Umarov

Я думаю, чисто моё мнение что разбив логи на файлы вы столкнетесь с проблемой распознания самой проблемы. Получив ошибку на n-ом шаге вы не сможете определить шаг n-1 так как он находиться в другом файле. Разбить файлы на 3 типа дело не хитрое, попробуйте собрать их учитывая что в один и тот же момент может случиться вылетить несколько логов одновременно.

Возвращаясь к вопросу фильтрации. Чтобы фильтровать можно использовать regEx для каждой строки и возвращать только те строки которые удовлетворяют этому regex

→ Ссылка