【问题标题】:Jetty: Debug logging for specific Java class not workingJetty:特定 Java 类的调试日志记录不起作用
【发布时间】:2018-05-18 11:16:34
【问题描述】:

我正在开发一个 Spring-MVC 应用程序,其中我使用 Jetty 作为我们的应用程序服务器。我想调试一个特定的 java 类的日志,但即使在启用 log4j 或 slf4j 并添加文件之后它也不起作用。

最后,我创建了一个war文件,添加到使用此命令java -jar start.jar --add-to-start=logging-log4j启动log4j,它在resources目录中创建了一个log4j.xml文件。在那个 log4j.xml 中,我添加了要调试的类,但没有添加任何 [DEBUG] 条目。

启用的模块:

log4j2-slf4j.mod
slf4j-log4j2.mod
slf4j-api.mod
logging-slf4j.mod

我还按照文档建议尝试了它们的组合和不同的日志记录。

log4j.xml 存在于 IDE 和 Jetty 的资源目录中。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
                     debug="false">

    <!-- console appender -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %c{1} - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelMatchFilter">
            <param name="LevelToMatch" value="INFO" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
        <filter class="org.apache.log4j.varia.DenyAllFilter"/>
    </appender>


    <logger name="com.zaxxer.hikari" additivity="false">
        <level value="DEBUG" />
        <appender-ref ref="console" />
    </logger>


    <root>
        <priority value="ERROR" />
        <appender-ref ref="console" />
    </root>

</log4j:configuration>

我做错了什么?

【问题讨论】:

  • 你似乎有桥梁,但没有 log4j 本身。 log4j 本身是否在您的类路径中?顺便推荐一下 logback 而不是 log4j,不过那是另外一回事了。
  • @JanLarsen :你是对的,我在 maven 中有 logback,ch.qos.logback。我不想在 maven 中添加 log4j,因为我可以看到我已将它们添加到排除列表中。如何根据我的要求配置 logback?谢谢。

标签: java logging log4j jetty


【解决方案1】:

似乎问题在于类路径中只有桥而不是 log4j 本身。

根据要求提供一个简单的 logback.xml 配置文件:

<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>

    <logger name="test" level="DEBUG" />

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

【讨论】:

  • 没有帮助。我已经在项目的两个资源文件夹中添加了 logback.xml,当添加模块以启动时,Jetty 为我创建了一个 logback.xml。但我仍然没有在日志文件或控制台中看到调试输出。
  • 您是否将“测试”更改为您的包?
  • 您将需要以下依赖项:javacodegeeks.com/2012/04/…
  • 是的。到目前为止,我将 test 更改为 org.hibernate。我没有 slf4j,所以我添加了它。依然没有。这是 pom.xml pastebin.com/DxXwe8w1
猜你喜欢
  • 1970-01-01
  • 2021-11-19
  • 2011-01-23
  • 2012-03-03
  • 2020-05-22
  • 1970-01-01
  • 2012-11-16
  • 2018-08-24
  • 2011-12-27
相关资源
最近更新 更多