注销配置失败 - 原因

时间:2014-08-28 21:35:22

标签: java classpath slf4j logback

即使我把它放在每个源文件夹中,或者使用-Dlogback.configurationFile=C:\Users\dell\Documents\Corr\conf\logback.xml作为程序参数或vm参数,我也无法使用logback.xml文件。但是,它没有用。为什么?为什么?

我应该把这个文件放在哪里以便检测到它?

我做了什么;

logback.xml

<configuration> 
    <appender   name ="FileAppender"
        class="ch.qos.logback.core.FileAppender">


        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>         INFO    </level>
            <onMatch>       ACCEPT  </onMatch>
            <onMismatch>    DENY    </onMismatch>
        </filter>

        <property file="conf/variables.properties" />

        <file>  ${HOME}/build/log/corr.log  </file>
        <rollingPolicy  class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>   
                ${HOME}/build/log/%d{yyyy/MM/dd}.%i.log 
            </fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>   2MB </maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <encoder>
            <charset>UTF-8</charset>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS}
                %level{5}
                [%thread] 
                %class{0}.%method at %line 
                %msg
                %n
                %ex{full}
                %n
            </pattern>
        </encoder>
    </appender>

    <root   level="DEBUG">
            <appender-ref   ref="FileAppender" />
    </root>
</configuration>

属性文件; variables.properties

HOME=C:\Users\dell\Documents\Corr

项目层次结构

Corr
  | - - src
          | - - CorrAnaly
                   | - - main.java
  | - - testSrc
  | - - build
          | - - log
  | - - bin
  | - - conf
          | - - logback.xml
          | - - variables.properties

我把logback.xml放在哪里

  • 直接在src文件夹下
  • 直接位于包中的主要项目类(在main.java附近)
  • 直接在Corr文件夹下

所有这些都没有奏效。另外,我尝试使用conf文件夹作为源文件夹。我已经宣布它并使用它但没有奏效。

帮我弄清楚为什么logback没有检测到我的文件。我该怎么做才能使用Logback功能?

环境:Windows 7,Eclipse Indigo

更新

要运行应用程序,我正在使用;

  • Eclipse Run Java Application
  • ivyDe依赖决议

我的ivy.xml文件

<ivy-module version="2.0">
    <configurations defaultconfmapping="runtime->compile">      
        <conf   name="compile" />
        <conf   name="test" />
        <conf   name="runtime"      
                extends="compile"   />
    </configurations>
    <dependencies>          
        <dependency org="SLF4J" name="slf4j-api-1.7.7"  rev="1.7.7"
                            conf="compile->default"/>   
        <dependency org="LOGBack"   name="logback-core-1.1.2"   rev="1.1.2" 
                            conf="runtime->default"/>
        <dependency org="SLF4J" name="slf4j-jdk14-1.7.7"    rev="1.7.7" 
                            conf="runtime->default"/>
    </dependencies>
</ivy-module>

更新2 我已经尝试使用简单的logback.xml,以防我的第一次配置无法正常工作。它甚至对简单的logback.xml情况也没有用;

<appender   name ="ConsoleAppender" 
    class="ch.qos.logback.core.ConsoleAppender">

    <encoder>   
        <charset>   UTF-8   </charset>
        <pattern>%-5level [%thread] %class{0}.%method at line %line --%message%n%ex</pattern>
    </encoder>
</appender>

<root   level="DEBUG">
        <appender-ref   ref="ConsoleAppender" />
</root>

更新3

从昨晚开始,我已经尝试了很多东西,最后在源代码中,我可以从getClass().getResource("/logback/logback.xml").toURI().toString()获得非null结果。但是,仍然会调用默认的logback.xml。

bin结构

bin
 | - - Corr
 | - - conf
         | - - logback.xml

我在Eclipse的vm参数部分尝试了-Dlogback.configurationFile=(分开并逐个);

  • \ BIN \的logback \ logback.xml
  • /bin/logback/logback.xml
  • 仓\的logback \ logback.xml
  • 仓/的logback / logback.xml
  • \的logback \ logback.xml
  • /logback/logback.xml
  • 的logback \ logback.xml
  • 的logback / logback.xml
  • \ logback.xml
  • /logback.xml
  • logback.xml
  • 〜\文件\科尔\建立\的logback \ logback.xml
  • 〜/文档/科尔/建造/的logback / logback.xml

我的大脑:不在乎错误;帮帮我!

1 个答案:

答案 0 :(得分:0)

我不知道上面问题背后的原因但是在改变了依赖文件后就像;

<dependency org="SLF4J" name="slf4j-api-1.7.7"  rev="1.7.7"
            conf="compile->default"/>
<dependency org="LOGBack"   name="logback-core-1.1.2"   rev="1.1.2" 
            conf="runtime->default"/>
<dependency org="LOGBack"   name="logback-classic-1.1.2"    rev="1.1.2" 
            conf="runtime->default"/>
我的

配置文件现已被Logback识别。我认为slf4j-jdk14-1.7.7阻止Logback来读取我的配置文件。

要强调的是,我使用了slf4j的jdk导致将Logback绑定到其内部并忽略我自己的配置文件即logback.xml。 (我说“忽略”,因为你可以努力,我所有可能的尝试,在问题机构。)