Ошибка конфигурации входа в систему. Почему

1

Я не могу использовать файл 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

  • прямо под папкой src
  • непосредственно под основным классом проекта, который находится в пакете (рядом с main.java)
  • прямо под папкой Corr

Все они не работали. Кроме того, я попытался использовать папку conf в качестве исходной папки. Я объявил это так и использовал его, но не работал.

Помогите мне разобраться, почему logback не обнаруживает мой файл. Что я должен сделать, чтобы использовать функцию Logback?

Окружающая среда: Windows 7, Eclipse Indigo

ОБНОВИТЬ

Для запуска приложения я использую;

  • Запуск Java-приложения Eclipse
  • 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(). Однако по-прежнему вызывается по умолчанию logback.xml.

структуры

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

Я пробовал -Dlogback.configurationFile= в разделе аргументов vm в Eclipse (отдельно и один за другим);

  • \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
  • ~\Documents\Corr\построить\Logback\logback.xml
  • ~/Документы/Корр/строительство /Logback/logback.xml

Мой мозг: Вне сознания Ошибка; Помоги мне!

  • 0
    Ваш XML-файл копируется в каталог bin (или target)? Какую систему сборки вы используете? Он не будет в пути к классам, если он не находится в той же структуре каталогов, что и ваши файлы .class.
  • 0
    Также укажите полное значение -Dlogback.configurationFile =.
Показать ещё 6 комментариев
Теги:
logback
slf4j
classpath

1 ответ

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 для чтения моего файла конфигурации.

Чтобы подчеркнуть, я использовал jdk slf4j, который вызвал привязку Logback к его внутреннему и игнорировать мой собственный файл конфигурации, а именно logback.xml. (Я сказал "игнорирует", потому что вы можете мои усилия, все возможности, которые я пробовал, в вопросительном органе.)

  • 0
    В вашей проблеме наверняка отсутствовал logback-classic, а не slf4j-jdk14-1.7.7, потому что classic реализует множество необходимых вещей.
  • 0
    @ ThorstenSchöning вы не правы. Я использовал версию JDK, и никаких ошибок или предупреждений не произошло. Журнал показывается в виде «дата ошибки класса имя msg». Всякий раз, когда я пытался найти, какой файл конфигурации читается, я помещал классическую версию jar в скрипт зависимости; после этого я принял несколько ошибок связывания. Прочитав некоторые объяснения на веб-сайте Logback, я чувствую, что jdk блокирует Logback, чтобы прочитать мой файл conf. Я думаю, что я прав.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню