Подстановка переменных обратного входа не смогла найти файл свойств на пути к классам - PullRequest
13 голосов
/ 30 марта 2012

Мне очень нравится поддержка Logback для входа в БД.Однако у меня возникают проблемы с использованием функции подстановки переменных Logback, более конкретно, из файла свойств на пути к классам.

Моя ссылка: http://logback.qos.ch/manual/configuration.html#variableSubstitution

Итак, у меня есть многомодульный Mavenпроект.В моем веб-модуле (который генерирует файл .war) у меня есть файлы conf Logback в следующем каталоге:

src/main/reesources
- logback.xml
- local.properties
- dev.properties

Мой logback.xml выглядит так:

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

    <property file="${env}.properties"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%X{messageId}] %-5level %logger{0} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
            <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <driverClass>${logback.db.driverClassName}</driverClass>
                <jdbcUrl>${logback.db.url}</jdbcUrl>
                <user>${logback.db.user}</user>
                <password>${logback.db.password}</password>
            </dataSource>
        </connectionSource>
    </appender>

    <root level="debug">
        <appender-ref ref="DB" />
    </root>
</configuration>

Поэтому, когда я запускаю сервер Tomcat, я передаю $ {env} следующим образом:

-Denv=local

Однако при запуске сервера я получаю следующую ошибку:

17:45:22,782  WARN com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0 DriverManagerDataSource:107 - Could not load driverClass logback.db.driverClassName_IS_UNDEFINED
java.lang.ClassNotFoundException: logback.db.driverClassName_IS_UNDEFINED
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)

Похоже, у Logback Joran возникли проблемы с поиском файла свойств.

Может кто-нибудь сообщить мне, что я сделал не так?

1 Ответ

19 голосов
/ 30 марта 2012

Как я уже сказал в комментариях:

Должно быть:

<property resource="${env}.properties"/>

Не

<property file="${env}.properties"/>
...