从Maven插件为嵌入式Tomcat配置日志。

问题描述 投票:19回答:6

我正在使用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:run

问题:没有 catalina.out 日志文件?

我想打开Realms的日志记录,这样我就可以调试一些东西。 在.targettomcatlog目录下,只有access_log.*,没有其他日志文件。

我试着在.targettomcatconflogging.properties文件中进行修改,但没有用。

我如何为这个Tomcat配置日志?

tomcat logging configuration maven-plugin
6个回答
8
投票

我找到了解决方案,你需要描述你的日志库的额外依赖性。在我的例子中,它是 回流如果你使用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>

0
投票

尝试使用

    <tomcatLoggingFile>log.txt</tomcatLoggingFile>

的配置部分。


0
投票

目前由于bug,嵌入式Tomcat Maven的日志配置被破坏了。

https:/issues.apache.orgjirabrowseMTOMCAT-127。

解决办法是简单的重定向stdout,比如。

mvn tomcat7:run 2>&1 | tee catalina.out

0
投票

我的解决办法是:

            String logBackfile  ="....."; //the logback config
            LoggerContext lc = new LoggerContext();

            JoranConfigurator configurator = new JoranConfigurator();  
            configurator.setContext(lc);  
            lc.reset();  
            configurator.doConfigure(logBackfile);
            StatusPrinter.printInCaseOfErrorsOrWarnings(lc);  

0
投票

这只是一个部分答案,但我是这样工作的,我的应用程序包含了它自己的logback依赖关系(不需要声明extraDependencies)。

这里唯一需要注意的是,当我的应用程序中出现低级错误时(在应用程序加载或其他之前),我仍然无法获得我所需要的Tomcat catalina.log输出。 在这种配置下,我只能得到我的应用程序级别的日志文件(而不是我真正想要的logscatalina.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>
© www.soinside.com 2019 - 2024. All rights reserved.