Как настроить log4j2 для регистрации 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] -----------------------------------------------------

person Zixradoom    schedule 13.06.2015    source источник


Ответы (1)


Вы используете slf4j-log4j12, что позволяет использовать slf4j для регистрации сообщений с помощью log4j 1.2. Но ваша цель — регистрировать сообщения с помощью slf4j поверх log4j 2.0.2. Поэтому вам нужна другая библиотека привязки: https://logging.apache.org/log4j/2.0/log4j-slf4j-impl/index.html.

Координаты Maven этой библиотеки привязок указаны в документации log4j2.

person JB Nizet    schedule 13.06.2015