如何配置 log4j2 以记录 HikariCP

How to configure log4j2 to log for HikariCP

我写了一个小 Gradle 项目,这样我就可以学习如何在同一个项目中配置 HikariCP 和 JDBC 以及 Log4j2。我已将以下 log4j2 配置放在我项目的 src/main/resources 目录中。当我使用 gradle run 执行项目时,我收到一条关于未为 com.zaxxer.hikari.HikariConfig 记录器配置附加程序的警告。

有人好心告诉我哪里做错了吗?

log4j2.xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="com.zaxxer.hikari.HikariConfig" level="trace">
      <AppenderRef ref="Console"/>
    </Logger>
    <Root level="TRACE">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

build.gradle

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'application'

targetCompatibility = 1.8
sourceCompatibility = 1.8
version = '0.0.1.0'
group = 'com.s2d'

mainClassName = "com.s2d.jdbctest.DemoJDBC"
applicationDefaultJvmArgs = ["-Djdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver"]

task wrapper(type: Wrapper) {
  gradleVersion = '1.4'
}

repositories {
  mavenCentral()
}

dependencies {
  compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.0.2'
  compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.0.2'
  compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.10'
  compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.10'
  compile group: 'com.zaxxer', name: 'HikariCP', version: '2.3.7'
  runtime group: 'org.apache.derby', name: 'derby', version: '10.11.1.1'
  testCompile group: 'junit', name: 'junit', version: '4.11'
}

test.scanForTestClasses(false)

javadoc.options.links("http://docs.oracle.com/javase/7/docs/api/")

task sourcesJar(type: Jar, dependsOn: classes) {
  classifier = 'sources'
  from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
  classifier = 'javadoc'
  from javadoc.destinationDir
}

artifacts {
  archives sourcesJar
  archives javadocJar
}

执行输出

[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks: 
[sts]      run
[sts] -----------------------------------------------------
:compileJava UP-TO-DATE
:processResources
:classes
:run
20:27:11.247 [main] INFO  com.s2d.jdbctest.DemoJDBC - Starting demo
log4j:WARN No appenders could be found for logger (com.zaxxer.hikari.HikariConfig).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Column Count: 1
Column 1 name: 1 type: DECIMAL
Inserted ID: 1005
20:27:12.350 [main] INFO  com.s2d.jdbctest.DemoJDBC - Demo complete

BUILD SUCCESSFUL

Total time: 2.017 secs
[sts] -----------------------------------------------------
[sts] Build finished succesfully!
[sts] Time taken: 0 min, 2 sec
[sts] -----------------------------------------------------

您正在使用 slf4j-log4j12,它允许使用 slf4j 通过 log4j 1.2 记录消息。但是您的目标是在 log4j 2.0.2 上使用 slf4j 记录消息。所以你需要另一个绑定库:https://logging.apache.org/log4j/2.0/log4j-slf4j-impl/index.html.

此绑定库的 Maven 坐标在 log4j2 documentation.