Я не могу использовать файл logback.xml, даже если я поместил его в каждую исходную папку или использовал -Dlogback.configurationFile=C:\Users\dell\Documents\Corr\conf\logback.xml
как аргумент программы или аргумент vm. Но это не сработало. Зачем? Зачем?
Где я должен помещать этот файл так, чтобы он был обнаружен?
Что я наделал;
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()
. Однако по-прежнему вызывается по умолчанию logback.xml.
структуры
bin
| - - Corr
| - - conf
| - - logback.xml
Я пробовал -Dlogback.configurationFile=
в разделе аргументов vm в Eclipse (отдельно и один за другим);
Мой мозг: Вне сознания Ошибка; Помоги мне!
Я не знаю причины вышеупомянутой проблемы, но после изменения файла зависимостей;
<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 для чтения моего файла конфигурации.
Чтобы подчеркнуть, я использовал jdk slf4j, который вызвал привязку Logback к его внутреннему и игнорировать мой собственный файл конфигурации, а именно logback.xml. (Я сказал "игнорирует", потому что вы можете мои усилия, все возможности, которые я пробовал, в вопросительном органе.)