Включить ведение журнала отладки в плагине maven jetty 7

Я запускаю веб-приложение java с простым mvn jetty:run, используя последний плагин причала, но я не могу найти способ сообщить причалу выводить сообщения DEBUG на консоль (для встроенного экземпляра причала, а не сам плагин). В настоящее время он выводит только сообщения WARN и INFO. Я пытался установить -DDEBUG и -DVERBOSE, но они ничего не делают. Я уже ознакомился с документацией, но, похоже, она не охватывает это.


person wds    schedule 03.03.2010    source источник


Ответы (5)


Обновление: Хорошо, у меня наконец-то все заработало, и вот что я сделал.

Насколько я понимаю, Jetty 7 не имеет никаких зависимостей от конкретной среды ведения журналов, даже для механизма JSP, поскольку Jetty 7 использует механизм JSP 2.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>

Затем добавьте файл конфигурации src/etc/logback.xml. Ниже минимальная конфигурация:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
    </layout>
  </appender>

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

При такой настройке Jetty будет выводить сообщения DEBUG:

$ 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 [email protected]:8080
00:31:33.217 [main] DEBUG org.mortbay.log - started [email protected]:8080
00:31:33.217 [main] DEBUG org.mortbay.log - started org.mortbay.jetty.Server@a010ba
[INFO] Started Jetty Server

Ресурсы:

person Pascal Thivent    schedule 03.03.2010
comment
Спасибо, Паскаль. Я видел только первую версию вашего ответа, поэтому мне потребовалось некоторое время, чтобы принять ее. Я не помню, для чего я хотел это сделать, но я обязательно вернусь к этому, если это когда-нибудь возникнет снова. - person wds; 10.11.2010

Чтобы расширить ответ Паскаля, вот как он работает с 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>

Это ваш ${project.basedir}/src/test/resources/log4j.properties:

log4j.rootLogger=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = [%-5p] %c: %m\n
log4j.logger.org.eclipse.jetty.util.log=INFO

Дополнительные ресурсы:

person yegor256    schedule 26.02.2011
comment
Системное свойство log4j.configurationFile у меня не работает, но log4j.configuration. - person Michael K.; 08.10.2012
comment
Для log4j 1.2.16 Maven 3 мне пришлось пойти на <systemProperty> <name>log4j.configuration</name> <value>${project.baseUri}/src/test/resources/log4j.properties</value> </systemProperty> - person Bruno Grieder; 16.06.2013

Вы также можете сделать это "mvn -X jetty:run"

person somebodywhocares    schedule 16.07.2011

Чтобы расширить ответ Паскаля и yegor256, вот как это работает с SLF4J Simple logger (это самый простой вариант, поскольку вам просто нужно добавить зависимость к slf4j-simple):

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

Регистратор SLF4J можно настроить непосредственно из Maven pom. Значения по умолчанию описаны в http://www.slf4j.org/apidocs/org/slf4j/impl/SimpleLogger.html)

Например, войдите в файл /tmp/output.log с более высоким уровнем отладки (TRACE):

<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>
person Stepan Vavra    schedule 09.07.2015

Я считаю это решение более удобным

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

плагин для ресурсов

person vogdb    schedule 15.01.2012