【问题标题】:Logback variable substitution could not locate property file on the classpathLogback 变量替换无法在类路径上找到属性文件
【发布时间】:2012-04-13 16:56:53
【问题描述】:

我真的很喜欢 Logback 对登录数据库的支持。但是,我在使用 Logback 的变量替换功能时遇到了问题,更具体地说,是从类路径上的属性文件中。

我的参考:http://logback.qos.ch/manual/configuration.html#variableSubstitution

所以我有一个多模块 Maven 项目。在我的 web 模块(生成一个 .war 文件)中,我的 Logback conf 文件位于以下目录中:

src/main/resources
- 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 无法找到属性文件。

谁能告诉我我做错了什么?

【问题讨论】:

  • Tomcat 是否从 Java 传递系统变量? Tomcat 有时会做一些有趣的事情。
  • 我的老板只是通过观察我的肩膀帮助我解决了我的问题。我应该使用&lt;property resource="${env}.properties"/&gt;,而不是使用&lt;property file="${env}.properties"/&gt;。也许是时候回家了:)
  • 你可能想自己解决这个问题。干得好。

标签: java maven logging logback


【解决方案1】:

正如我在 cmets 中所说:

应该是:

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

不是

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 2014-03-26
    • 2018-04-19
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多