Java 在maven jetty 7插件中启用调试日志记录

Java 在maven jetty 7插件中启用调试日志记录,java,logging,maven-2,jetty,maven-jetty-plugin,Java,Logging,Maven 2,Jetty,Maven Jetty Plugin,我正在使用最新的jetty插件运行一个带有简单的mvn jetty:run的java webapp,但是我似乎找不到一种方法来告诉jetty将调试消息输出到控制台(对于嵌入式jetty实例,而不是插件本身)。它目前只输出警告和信息消息。我试过设置-DDEBUG和-DVERBOSE,但它们什么都不做。我已经看过了,但它似乎没有涵盖这一点。更新:好的,我终于让事情开始运作了,下面是我所做的 我的理解是,Jetty 7对特定的日志框架没有任何依赖性,即使对于JSP引擎也是如此,因为Jetty 7使用的

我正在使用最新的jetty插件运行一个带有简单的
mvn jetty:run
的java webapp,但是我似乎找不到一种方法来告诉jetty将调试消息输出到控制台(对于嵌入式jetty实例,而不是插件本身)。它目前只输出警告和信息消息。我试过设置
-DDEBUG
-DVERBOSE
,但它们什么都不做。我已经看过了,但它似乎没有涵盖这一点。

更新:好的,我终于让事情开始运作了,下面是我所做的

我的理解是,Jetty 7对特定的日志框架没有任何依赖性,即使对于JSP引擎也是如此,因为Jetty 7使用的是JSP2.1引擎。因此,您可以使用任何日志框架。这里我将使用logback

首先在插件中添加
logback classic
作为依赖项,并将
logback.configurationFile
系统属性设置为指向配置文件:

<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>7.0.0.pre5</version>
        <configuration>
          <systemProperties>
            <systemProperty>
              <name>logback.configurationFile</name>
              <value>./src/etc/logback.xml</value>
            </systemProperty>
          </systemProperties>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>0.9.15</version>
          </dependency>
        </dependencies>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>
通过此设置,jetty将输出调试消息:

$ mvn jetty:run ... 00:31:33.089 [main] DEBUG org.mortbay.log - starting DefaultHandler@145e5a6 00:31:33.089 [main] DEBUG org.mortbay.log - started DefaultHandler@145e5a6 00:31:33.105 [main] DEBUG org.mortbay.log - starting RequestLogHandler@1e80761 00:31:33.106 [main] DEBUG org.mortbay.log - started RequestLogHandler@1e80761 00:31:33.106 [main] DEBUG org.mortbay.log - starting HandlerCollection@1485542 00:31:33.106 [main] DEBUG org.mortbay.log - started HandlerCollection@1485542 00:31:33.106 [main] DEBUG org.mortbay.log - starting org.mortbay.jetty.Server@a010ba 00:31:33.174 [main] DEBUG org.mortbay.log - started org.mortbay.jetty.nio.SelectChannelConnector$1@ee21f5 00:31:33.216 [main] INFO org.mortbay.log - Started SelectChannelConnector@0.0.0.0:8080 00:31:33.217 [main] DEBUG org.mortbay.log - started SelectChannelConnector@0.0.0.0:8080 00:31:33.217 [main] DEBUG org.mortbay.log - started org.mortbay.jetty.Server@a010ba [INFO] Started Jetty Server $mvn码头:运行 ... 00:31:33.089[main]调试org.mortbay.log-启动DefaultHandler@145e5a6 00:31:33.089[main]调试org.mortbay.log-已启动DefaultHandler@145e5a6 00:31:33.105[主]调试org.mortbay.log-启动RequestLogHandler@1e80761 00:31:33.106[主]调试org.mortbay.log-已启动RequestLogHandler@1e80761 00:31:33.106[主]调试org.mortbay.log-启动HandlerCollection@1485542 00:31:33.106[主]调试org.mortbay.log-已启动HandlerCollection@1485542 00:31:33.106[主]调试org.mortbay.log-启动org.mortbay.jetty。Server@a010ba 00:31:33.174[main]调试org.mortbay.log-启动org.mortbay.jetty.nio.SelectChannelConnector$1@ee21f5 00:31:33.216[主]信息org.mortbay.log-已启动SelectChannelConnector@0.0.0.0:8080 00:31:33.217[main]调试org.mortbay.log-已启动SelectChannelConnector@0.0.0.0:8080 00:31:33.217[main]调试org.mortbay.log-启动org.mortbay.jetty。Server@a010ba [信息]已启动Jetty服务器 资源:

  • 页面
  • 消息/线程
  • 从Logback文档中删除

为了扩展Pascal的答案,它是如何与log4j一起工作的:

<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>7.0.0.pre5</version>
        <configuration>
          <systemProperties>
            <systemProperty>
              <name>log4j.configurationFile</name>
              <value>file:${project.basedir}/src/test/resources/log4j.properties</value>
            </systemProperty>
          </systemProperties>
        </configuration>
        <dependencies>
           <dependency>
             <groupId>log4j</groupId>
             <artifactId>log4j</artifactId>
             <version>1.2.16</version>
           </dependency>
           <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
             <version>1.6.1</version>
           </dependency>
           <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
             <version>1.6.1</version>
           </dependency>
        </dependencies>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>
额外资源:


您也可以这样做“mvn-X jetty:run”

我发现这个解决方案更方便

    <resources>
        <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <targetPath>${project.build.outputDirectory}</targetPath>
            <includes>
                <include>log4j.properties</include>
            </includes>
        </resource>
    </resources>

${project.basedir}/src/main/resources
${project.build.outputDirectory}
log4j.properties
也别忘了粘贴

    <overwrite>true</overwrite>
true

对于扩展Pascal和yegor256答案的resources plugin,这就是它如何与
SLF4J Simple logger
一起工作的方式(这是最简单的选项,因为您只需要向
SLF4J Simple
添加依赖项即可):


谢谢你,帕斯卡。我只看到了你答案的第一个版本,所以我花了一段时间才接受。我不记得我想这样做是为了什么,但如果它再次出现,我一定会参考它。系统属性log4j.configurationFile对我不起作用,但是log4j.configuration.log4j 1.2.16 Maven 3我必须选择
log4j.configuration${project.baseUri}/src/test/resources/log4j.properties
    <resources>
        <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <targetPath>${project.build.outputDirectory}</targetPath>
            <includes>
                <include>log4j.properties</include>
            </includes>
        </resource>
    </resources>
    <overwrite>true</overwrite>
<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>7.0.0.pre5</version>

        <dependencies>
           <dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-simple</artifactId>
              <version>1.7.5</version>
           </dependency>
        </dependencies>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>
<configuration>
   <systemProperties>
      <systemProperty>
         <name>org.slf4j.simpleLogger.logFile</name>
         <value>/tmp/output.log</value>
      </systemProperty>
      <systemProperty>
         <name>org.slf4j.simpleLogger.defaultLogLevel</name>
         <value>trace</value>
      </systemProperty>
   </systemProperties>
</configuration>