【问题标题】:Configure logging for Jetty's maven plugin?为 Jetty 的 Maven 插件配置日志记录?
【发布时间】:2011-11-02 08:24:59
【问题描述】:

我正在使用以下插件配置调用“jetty:run”目标:

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>7.4.4.v20110707</version>
  <configuration>
    <scanIntervalSeconds>5</scanIntervalSeconds>
    <connectors>
      <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <port>80</port>
      </connector>
    </connectors>        
  </configuration>
</plugin>

尽管我的项目将 slf4j 声明为依赖项,但 Jetty 拒绝将任何内容记录到 slf4j。如果我将“-Dorg.eclipse.jetty.util.log.DEBUG=true”传递给 JVM,Jetty 会输出大量日志,但它们似乎会转到 stderr 而不是 slf4j。有什么想法吗?

【问题讨论】:

    标签: jetty slf4j maven-jetty-plugin


    【解决方案1】:

    回答我自己的问题:

    1. 插件看不到项目依赖项。您需要在&lt;plugin&gt; 中指定&lt;dependencies&gt;

    2. 你需要指定一个具体的 slf4j 实现,比如 logback。只指定 slf4j 是不够的。

    最终结果应该是这样的:

      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>7.4.4.v20110707</version>
        <configuration>
          <scanIntervalSeconds>5</scanIntervalSeconds>
          <connectors>
            <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
              <port>80</port>
            </connector>
          </connectors>        
        </configuration>
        <dependencies>
          <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>0.9.29</version>
          </dependency>
        </dependencies>
      </plugin>
    

    【讨论】:

    • 注意,要配置日志,只需让 maven 知道您的配置文件在哪里: mvn verify -Dlogback.configurationFile=/path/to/logback.xml
    • 第 9 版有更新吗?使用此配置时,我没有看到来自 Jetty 的任何日志。
    • @user64141 我不知道有任何变化。也就是说,我不再使用 Jetty maven 插件。我现在从一个普通的 Java 类调用 Jetty。
    【解决方案2】:

    稍微扩展 Gili 的答案;使用 properties-maven-plugin 是一种设置系统属性的便捷方法,而不必在命令行上指定它们。我提供了 logback 和 log4j 的示例。除了 Gili 答案中的 jetty-maven-plugin 配置之外,将此插件块添加到您的 pom.xml 中。

    回退:

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>properties-maven-plugin</artifactId>
      <version>1.0-alpha-2</version>
      <executions>
        <execution>
          <goals>
            <goal>set-system-properties</goal>
          </goals>
          <configuration>
            <properties>
              <!-- makes jetty log the exception if it fails to initialize slf4j -->
              <property>
                <name>org.eclipse.jetty.util.log.IGNORED</name>
                <value>true</value>
              </property>
              <!-- Location of logback config -->
              <property>
                <name>logback.configurationFile</name>
                <value>/path/to/logback.xml</value>
              </property>
            </properties>
          </configuration>
        </execution>
      </executions>
    </plugin>
    

    Log4j:

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>properties-maven-plugin</artifactId>
      <version>1.0-alpha-2</version>
      <executions>
        <execution>
          <goals>
            <goal>set-system-properties</goal>
          </goals>
          <configuration>
            <properties>
              <!-- makes jetty log the exception if it fails to initialize slf4j -->
              <property>
                <name>org.eclipse.jetty.util.log.IGNORED</name>
                <value>true</value>
              </property>
              <!-- this tells where the log4j configuration is -->
              <property>
                <name>log4j.configuration</name>
                <value>file:./src/main/resources/log4j.properties</value>
              </property>
              <!-- this can be uncommented to debug startup log4j itself,
                   e.g. how it locates log4j.properties etc -->
              <!--
              <property>
                <name>log4j.debug</name>
                <value></value>
              </property>
              -->
            </properties>
          </configuration>
        </execution>
      </executions>
    </plugin>
    

    同样对于 log4j,自然使用 jetty-maven-plugin 的以下依赖而不是 logback-classic:

    <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      ...
      <dependencies>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.6.4</version>
        </dependency>
      </dependencies>
    </plugin>
    

    【讨论】:

      猜你喜欢
      • 2012-05-30
      • 2011-01-23
      • 2013-06-03
      • 2011-02-24
      • 2014-02-23
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多