Роллинг Логи в LIFERAY DXP

Я столкнулся с проблемой при попытке настроить стратегию прокрутки журнала в Liferay DXP. В portal-log4j-ext.xml файл, я хотел:

  • Создайте стратегию скользящего журнала на основе максимального размера файла и даты, добавленной в конце имени файла.
  • Создайте стратегию ежедневного скользящего журнала, которая создает файл ежедневного журнала со сжатием.

Выше portal-log4j-ext.xml:

<appender name="PROJECT" class="org.apache.log4j.RollingFileAppender">
    <!-- The active file to log to -->
    <param name="file" value="@liferay.home@/logs/logging/liferay@spi.id@.%d.log" />
    <param name="MaxFileSize" value="5KB"/>
    <param name="MaxBackupIndex" value="100"/>
    <param name="append" value="true" />
    <param name="encoding" value="UTF-8" />

    <!-- Keep one backup file -->
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="@liferay.home@/logs/logging/archive/liferay@spi.id@.%d.log.gz" />
    </rollingPolicy>

    <layout class="org.apache.log4j.EnhancedPatternLayout">
        <param name="ConversionPattern" value="[%d{dd.MM.yyyy HH:mm:ss}{Europe/Paris}] %-5p [%t][%c{1}:%L] %m%n" />
    </layout>
</appender>

<root>
    <priority value="INFO" />
    <appender-ref ref="PROJECT" />
    <!--appender-ref ref="CONSOLE" /-->
    <!--appender-ref ref="XML_FILE" /-->
    <!--<appender-ref ref="TEXT_FILE" />-->
</root>

Вот сгенерированные файлы журналов:

Проблема в том, что дата не добавляется к сгенерированным файлам, а TimeBasedRollingPolicy не работает.

Я использую Log4j 1.2

Есть ли у вас предложения?

Заранее спасибо.

2 ответа

Пересмотрите свою стратегию

Прежде чем я запишу ответ: вы должны пересмотреть свою стратегию регистрации. У вас не будет "ежедневного файла журнала", основанного на вашей текущей конфигурации, потому что может быть до 100 ежедневных файлов журнала, каждый размером 5 КБ.

Таким образом, в худшем случае вы можете иметь 100 файлов, содержащих журналы одного дня с другим n файлы отсутствуют, потому что они превысили бы ваши MaxBackupIndex,

FileAppender

Если у вас очень ограниченное хранилище, вы должны использовать org.apache.log4j.RollingFileAppender с MaxFileSize а также MaxBackupIndex, Однако вы не можете определить DatePattern Вот.

Если вы хотите добавить дату к имени файла журнала, вы должны использовать org.apache.log4j.DailyRollingFileAppender, Тем не менее, вы не можете ни определить MaxFileSize ни MaxBackupIndex с помощью этого FileAppender, поэтому вам придется создать свой собственный FileAppender.

RollingPolicy

Ваша конфигурация RollingPolicy, кажется, в порядке. Я предполагаю, что вам нужно добавить зависимость apache-log4j-extras в ваш проект, который содержит RollingPolicy Интерфейс и его реализации (например, TimeBasedRollingPolicy).

В вашем portal-log4j-ext.xml отсутствуют компоненты в иерархии:

log4j: конфигурация

<appender class="org.apache.log4j.rolling.RollingFileAppender" name="TEXT_FILE">
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
    </rollingPolicy>

    <layout class="org.apache.log4j.EnhancedPatternLayout">
    </layout>
</appender>

Пример из: https://www.e-systems.tech/blog/-/blogs/customizing-portal-log4j-xml

Вторая деталь заключается в том, что вы, похоже, создаете нового appender, вы не можете сделать это из -ext.xml, по крайней мере, без перенастройки регистраторов из.xml для его использования. На практике это работа исходного файла, а не ext.

Другие вопросы по тегам