Я запускаю java webapp с простым mvn jetty:run
, используя последний плагин для причала, но я не могу найти способ сказать причал, чтобы выводить сообщения DEBUG на консоль (для встроенный экземпляр причала, а не сам плагин). В настоящее время он выводит только сообщения WARN и INFO. Я пробовал установить -DDEBUG
и -DVERBOSE
, но они ничего не делают. Я уже посмотрел на documentation, но, похоже, это не покрывает это.Включить ведение журнала отладки в maven jetty 7 plugin
ответ
Обновление: ОК, я, наконец, получил работу, и вот что я сделал.
Насколько я понимаю, 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
Ресурсы:
- Maven Jetty Plugin страница
- [m2] jetty6 plugin & log4j сообщение/резьба
- Chapter 3: Logback configuration из документации Logback
Чтобы продлить ответ Паскаля, это то, как он работает с 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
Дополнительные ресурсы:
Системное свойство log4j.configurationFile не работает для меня, но log4j.configuration. –
Для log4j 1.2.16 Maven 3 я должен был пойти на '
Вы также можете сделать это "MVN -X молы: бег"
я нахожу это решение более удобным
<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>
для запасных частей в
Чтобы продлить ответ Паскаля и 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>
Спасибо, Pascal. Я только видел первую версию вашего ответа, поэтому мне потребовалось некоторое время, чтобы принять ее. Я не помню, для чего я хотел это сделать, но я обязательно вернусь к этому, если он снова появится. – wds