2010-03-03 2 views
18

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

ответ

18

Обновление: ОК, я, наконец, получил работу, и вот что я сделал.

Насколько я понимаю, 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> 

С помощью этой установки, пристаней будет выводить DEBUG:

 
$ mvn jetty:run 
... 
00:31:33.089 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.089 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.105 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.174 [main] DEBUG org.mortbay.log - started [email protected] 
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 [email protected] 
[INFO] Started Jetty Server 

Ресурсы:

+0

Спасибо, Pascal. Я только видел первую версию вашего ответа, поэтому мне потребовалось некоторое время, чтобы принять ее. Я не помню, для чего я хотел это сделать, но я обязательно вернусь к этому, если он снова появится. – wds

11

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

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

+0

Системное свойство log4j.configurationFile не работает для меня, но log4j.configuration. –

+0

Для log4j 1.2.16 Maven 3 я должен был пойти на ' \t \t \t \t \t \t \t log4j.конфигурации \t \t \t \t \t \t \t $ {project.baseUri} /src/test/resources/log4j.properties \t \t \t \t \t \t ' –

0

я нахожу это решение более удобным

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

для запасных частей в

2

Чтобы продлить ответ Паскаля и 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 Logger непосредственно из 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> 
Смежные вопросы