我有一個logback問題。我設置它(使用maven),除了Logback報告找不到配置文件(但我可以使用默認記錄器配置登錄到控制檯),一切似乎都很好。Logback找不到logback.xml(即使存在)(在類路徑中)
[#| 2013-07-03T07:55:30.843 + 0200 | INFO | glassfish3.1.2 | javax.enterprise.system.std.com.sun.enterprise.server.logging | _ThreadID = 124; _ThreadName = Thread-2; | 07:54:39,844 | -INFO in ch.qos.logback.classic.LoggerContext [默認] - 找不到資源[logback.groovy]
07:54:39,844 | -INFO in ch.qos.logback.classic.LoggerContext [默認] - 找不到資源[logback-test.xml]
07:54:39,844 | -INFO in ch.qos.logback.classic.LoggerContext [default] - 找不到資源[logback.xml]
07:54:39,847 | -INFO in ch.qos.logback.classic.LoggerContext [default] - 設置默認配置。 |#]
我把配置文件(稱爲logback.xml)到我的Maven構件的src/main/resources
文件夾(這是一個WAR)。 有趣的是,如果我試圖從classpath中加載的配置,我成功了:
Reader r = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("logback.xml"));
StringWriter sw = new StringWriter();
char[] buffer = new char[1024];
for (int n; (n = r.read(buffer)) != -1;)
sw.write(buffer, 0, n);
String str = sw.toString();
System.out.println(str);
它打印我的示例配置文件:
[#|2013-07-03T07:55:30.844+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=124;_ThreadName=Thread-2;|<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root> </configuration>|#]
我pom.xml
有如下條目:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
打包爲WAR文件(在EAR文件中)。 WAR文件中logback.xml的位置如下:WEB-INF/classes/logback.xml
有沒有人知道我的設置有什麼問題?
的幫助
stupidSheep
你確定你是從戰爭中使用logback,而不是從應用服務器上使用? –