gpt4 book ai didi

java - logback配置失败--为什么

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:01 25 4
gpt4 key购买 nike

即使我已将 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>

属性文件;变量.属性

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 运行 Java 应用程序
  • 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结构

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

我已经在 Eclipse 的 vm 参数部分尝试过 -Dlogback.configurationFile= (分别并一一尝试);

  • \bin\logback\logback.xml
  • /bin/logback/logback.xml
  • bin\logback\logback.xml
  • bin/logback/logback.xml
  • \logback\logback.xml
  • /logback/logback.xml
  • logback\logback.xml
  • logback/logback.xml
  • \logback.xml
  • /logback.xml
  • logback.xml
  • ~\Documents\Corr\build\logback\logback.xml
  • 〜/Documents/Corr/build/logback/logback.xml

我的大脑:精神错乱错误;帮助我!

最佳答案

我不知道上述问题背后的原因,但在更改依赖文件后,例如;

<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 绑定(bind)到其内部并忽略我自己的配置文件即 logback.xml。 (我说“忽略”是因为你可以在问题正文中看到我的努力,我尝试过的所有可能性。)

关于java - logback配置失败--为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25558414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com