java - Logback 找不到 logback.xml,即使它存在(在类路径上)

标签 java maven war logback

我遇到了登录问题。我设置了它(使用 maven),一切似乎都很好,除了 Logback 报告它找不到配置文件(但我能够使用默认记录器配置登录到控制台)。

[#|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[default] - Could NOT find resource [logback.groovy]

07:54:39,844 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]

07:54:39,844 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]

07:54:39,847 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration. |#]

我将配置文件(称为 logback.xml)放入我的 Maven Artifact (这是一个 WAR)的 src/main/resources 文件夹中。 有趣的是,如果我尝试从类路径加载配置,我会成功:

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

有人知道我的设置有什么问题吗?

非常感谢您的帮助

笨羊

最佳答案

WAR 文件中的位置是正确的,WEB-INF/classes

logback configuration documentation讨论了 logback.xml 文件在 war 中的位置,但没有提及任何关于 EAR 的内容。

你能试试这个链接上的信息吗?我想知道是否需要以特定方式将其打包到 EAR 中。

  1. Glassfish 3 + ear + logback.xml

(编辑:第二个链接已删除,无效)

关于java - Logback 找不到 logback.xml,即使它存在(在类路径上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17440881/

相关文章:

java - 带复选框的 vaadin8.1.0 网格有问题

maven - cobertura-maven-plugin 找不到我的 groovy 源代码

java - 项目和 BOM 依赖项之间有什么区别?

java - 解析整数后计算平均值

java - ActiveMQ 未收到来自生产者的消息

java - 获取错误 : Unknown service requested [org. hibernate.boot.registry.classloading.spi.ClassLoaderService]

java - war 中缺少依存关系。 Gradle构建项目

deployment - 部署后更改 web.xml

tomcat - 从现有 WAR 文件创建 portlet

java - ThreadPoolExecutor异常通知