从Maven插件启动Jetty时无法看到Spring的日志输出

时间:2013-01-26 10:58:56

标签: eclipse maven logging spring-mvc jetty

我正在Eclipse Juno中开发一个webapp作为Maven多模块项目,使用Spring MVC和Jetty Maven插件版本8.1.7.v20120910,在开发期间使用HSQL作为内存数据库。我想使用jetty:run目标从IDE中启动Jetty。问题是我无法看到Spring的任何日志输出,但我怀疑上下文确实被加载,因为控制台日志输出暂时停止 - 只要加载我那么小的Spring上下文 - 然后再抛出一个NPE一个自动装配的bean。所以我怀疑在启动Spring上下文时出了什么问题。

这是在“短暂停止”之前的日志输出:

[INFO] web.xml file = file:/F:/projects/matching/template/template-app/src/main/webapp/WEB-INF/web.xml
[INFO] Webapp directory = F:\projects\matching\template\template-app\src\main\webapp
2013-01-26 11:09:18.130:INFO:oejs.Server:jetty-8.1.7.v20120910
2013-01-26 11:09:20.704:INFO:oejpw.PlusConfiguration:No Transaction manager found - if your webapp requires one, please configure one.

暂停后紧接着:

2013-01-26 11:09:35.884:INFO:/:No Spring WebApplicationInitializer types detected on classpath
2013-01-26 11:09:36.742:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
2013-01-26 11:09:36.742:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
2013-01-26 11:09:36.742:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
2013-01-26 11:09:36.743:WARN:oejw.WebAppContext:Failed startup of context o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
java.lang.NullPointerException

现在我相信我能够修复导致NPE的任何问题,但为此我需要看看我的Spring环境发生了什么。去年,当一位同事设置了我认为与我现在使用的配置相同的配置时,我曾经使用过同样的工具。

我整个上午都在网上搜索过,找不到任何有用的东西,只有模糊的建议在外部运行Jetty并组装战争并部署应用程序,这正是我想要的。

这是我的pom的构建配置:

<build>
    <pluginManagement>
    <plugins>
            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>src\main\webapp\WEB-INF\web.xml</webXml>
                    <warName>template</warName>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <configuration>
                    <webXml>src\main\webapp\WEB-INF\web.xml</webXml>
                    <webApp>
                        <jettyEnvXml>${jettyEnvXml-file}</jettyEnvXml>
                    </webApp>
                    <contextPath>template</contextPath>
                    <systemProperties>
                        <systemProperty>
                            <name>log4j.configuration</name>
                            <value>file:jetty/log4j-jetty.properties</value>
                        </systemProperty>
                    </systemProperties>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

这是我对Jetty的log4j配置:

log4j.debug=true
log4j.threshold=ALL

log4j.rootLogger=DEBUG, consoleLogger

log4j.appender.consoleLogger=org.apache.log4j.ConsoleAppender
log4j.appender.consoleLogger.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleLogger.layout.ConversionPattern=%-5p [%t]: %m%n
log4j.appender.consoleLogger.Threshold=TRACE

我的日志开头可能与此行有关吗?

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

但据我所知,这只是一个可以忽略的m2e bug。我虽然在我的类路径中有slf4j。

当我在SpringJPA模块中使用HSQL运行我的单元测试时,它运行良好,所以我怀疑它是一个Jetty问题或者我的log4j配置只是假的。

非常感谢任何想法,提示和帮助。

1 个答案:

答案 0 :(得分:0)

你的类路径中有slf4j,然后Jetty将使用slf4j。

确保setup/configure for slf4j

您甚至可以setup slf4j to have its log events route to log4j实际写入磁盘或呈现给您的控制台。