Изменить файл журнала HikariCP

В настоящее время я использую Sl4j 1.7.25 с logback-classic-1.2.3.

Файл logback.xml, помещенный в путь к классу tomcat, т. е. WEB-INF/classes, выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${catalina.home}/logs/foodini.log</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>[%d{dd-MMM-yyyy HH:mm:ss.SSS}] [%logger] [%-5level] - %msg%n</Pattern>
    </encoder>
  </appender>


  <root level="ALL">
    <appender-ref ref="FILE" />
  </root>

</configuration>

Это работает нормально, и все регистрируется в файле foodini.log в каталоге журналов tomcat.

Теперь, к сожалению, HikariCp также регистрируется в тот же файл и постоянно с интервалом около 30 секунд. Он в основном пишет события пула, утечки и все такое. Мне нужно, чтобы это было в отдельном файле, скажем, hikari.log, а не в foodini.log, который предназначен для журналов только моего веб-приложения, чтобы избежать беспорядка.

Я старался :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${catalina.home}/logs/foodini.log</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>[%d{dd-MMM-yyyy HH:mm:ss.SSS}] [%logger] [%-5level] - %msg%n</Pattern>
    </encoder>
  </appender>


  <appender name="HIKARI" class="ch.qos.logback.core.FileAppender">
    <file>${catalina.home}/logs/hikari.log</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>[%d{dd-MMM-yyyy HH:mm:ss.SSS}] [%logger] [%-5level] - %msg%n</Pattern>
    </encoder>
  </appender>

  <logger name="com.zaxxer.hikari">
    <appender-ref ref="HIKARI" />
  </logger>

  <root level="ALL">
    <appender-ref ref="FILE" />
  </root>

</configuration>

Он создает новый файл с именем hikari.log, но все по-прежнему регистрируется внутри foodini.log.

Для любого сервлета я использую:

private static final Logger LOG = LoggerFactory.getLogger(ServeletName.class);

чтобы получить регистратор, и он отлично работает.

РЕДАКТИРОВАТЬ: добавлена ​​​​конфигурация регистратора в файл журнала, и теперь журналы идут как в файлы foodini.log, так и в hikari.log... Теперь мне нужно, чтобы журналы hikari вообще не попадали в файл foodini.log.


person Kushan    schedule 24.02.2018    source источник


Ответы (1)


Для всех, кто заинтересован, конфигурация logback.xml, которую я создал, почти верна, только одна вещь отсутствовала, а именно свойство аддитивности в элементе регистратора. Если бы для этого не было установлено значение false, журналы hikari отправлялись бы в оба файла, а не исключительно в файлы hikari.log, вот обновленный и рабочий пример конфигурации, чтобы получить два разных файла журнала, один перед веб-приложением tomcat и один для конфигурации hikari, пул и журналы ошибок

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${catalina.home}/logs/foodini.log</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>[%d{dd-MMM-yyyy HH:mm:ss.SSS}] [%logger] [%-5level] - %msg%n</Pattern>
    </encoder>
</appender>

<appender name="HIKARI" class="ch.qos.logback.core.FileAppender">
    <file>${catalina.home}/logs/hikari.log</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>[%d{dd-MMM-yyyy HH:mm:ss.SSS}] [%logger] [%-5level] - %msg%n</Pattern>
    </encoder>
</appender>

<logger name="com.zaxxer.hikari" level="ALL" additivity="false">
    <appender-ref ref="HIKARI" />
</logger>

<root level="ALL">
    <appender-ref ref="FILE" />
</root>

person Kushan    schedule 24.02.2018