即使我把它放在每个源文件夹中,或者使用-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放在哪里
所有这些都没有奏效。另外,我尝试使用conf文件夹作为源文件夹。我已经宣布它并使用它但没有奏效。
帮我弄清楚为什么logback没有检测到我的文件。我该怎么做才能使用Logback功能?
环境:Windows 7,Eclipse Indigo
更新
要运行应用程序,我正在使用;
我的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=
(分开并逐个);
我的大脑:不在乎错误;帮帮我!
答案 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。 (我说“忽略”,因为你可以努力,我所有可能的尝试,在问题机构。)