Настройка ведения журнала для встроенного Tomcat из плагина Maven
Я использую плагин Tomcat7 Maven:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0-beta-1</version>
<configuration>
<update>true</update>
<contextFile>${basedir}/conf/context.xml</contextFile>
<tomcatUsers>${basedir}/conf/tomcat-users.xml</tomcatUsers>
</configuration>
</plugin>
Я запускаю свое приложение следующим образом (которое запускает встроенный tomcat)
mvn tomcat7: запустить
ВОПРОС: Нет файла журнала catalina.out?
Я хочу включить ведение журнала для Realms, чтобы я мог отлаживать что-то. В директории. /target/tomcat/log есть только access_log. * Никаких других файлов журналов.
Я пробовал возиться с файлом. /target/tomcat/conf/logging.properties безрезультатно.
Как я могу настроить ведение журнала для этого Tomcat?
Ответы
Ответ 1
Я нашел решение, вам нужно описать дополнительные зависимости вашей библиотеки протоколирования. В моем случае logback, если вы используете log4j, просто изменяйте зависимости. Оно работает...
ниже моей конфигурации:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<path>/myapp</path>
<extraDependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.7</version>
</dependency>
</extraDependencies>
</configuration>
</plugin>
Ответ 2
Попробуйте использовать
<tomcatLoggingFile>log.txt</tomcatLoggingFile>
в разделе конфигурации.
Ответ 3
Конфигурация регистрации для Embedded Tomcat Maven в настоящее время нарушена из-за ошибки
https://issues.apache.org/jira/browse/MTOMCAT-127
Обходной путь состоит в том, чтобы просто перенаправить stdout, например:
mvn tomcat7:run 2>&1 | tee catalina.out
Ответ 4
Мое решение:
String logBackfile ="....."; //the logback config
LoggerContext lc = new LoggerContext();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
lc.reset();
configurator.doConfigure(logBackfile);
StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
Ответ 5
Это лишь частичный ответ, но я получил его, как это, где мое приложение содержит свои собственные зависимости (не нужно объявлять extraDependencies).
Единственное предостережение здесь в том, что я все еще не могу получить вывод Tomcat catalina.log, который мне нужен, когда в моем приложении есть ошибка более низкого уровня (до загрузки приложения и/или другого). В этой конфигурации я получаю только файл журнала уровня приложения (а не logs/catalina.out, который я действительно хочу):
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version><!-- Tomcat 7.0.47 -->
<configuration>
<port>9090</port>
<path>/${project.artifactId}</path>
<systemProperties>
<spring.profiles.active>webService</spring.profiles.active>
<java.util.logging.config.file>src/integration-test/resources/logback.xml</java.util.logging.config.file>
</systemProperties>
</configuration>
<executions>
<execution>
<id>tomcat-run</id>
<goals>
<goal>run-war-only</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<fork>true</fork>
</configuration>
</execution>
<execution>
<id>tomcat-shutdown</id>
<goals>
<goal>shutdown</goal>
</goals>
<phase>post-integration-test</phase>
</execution>
</executions>
</plugin>