更改 HikariCP 日志文件

Change HikariCP Logging file

我目前正在使用带有 logback-classic-1.2.3

的 Sl4j 1.7.25

把logback.xml放在tomcat的class路径里面,即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>

这工作正常,所有内容都记录在 tomcat 日志目录下的 foodini.log 文件中。

现在不幸的是,HikariCp 也以大约 30 秒的间隔不断地记录到同一个文件。它基本上写了池事件和泄漏等等。我需要把它放在一个单独的文件中,比如 hikari.log 而不是 foodini.log 里面,这意味着只是我的 webapp 的日志,以避免混乱。

我试过了:

<?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

对于我使用的任何一个 servlet:

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

获取记录器,它工作正常。

编辑:向 logback 文件添加了一个记录器配置,现在日志转到文件 foodini.log 和 hikari.log...现在我需要 hikari 日志进入 foodini.log 文件

对于任何感兴趣的人,我创建的配置 logback.xml 几乎是正确的,只缺少一件事,那就是记录器元素上的可加性 属性。如果不将其设置为 false,hikari 日志将转到两个文件,而不是专门转到 hikari.log 文件,这是更新和工作的配置示例,以获取两个不同的日志文件,一个在 tomcat webapp 之前和一个用于 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>