tomcat中的logback配置

Jor*_*orn 4 java logging tomcat logback tomcat7

我在 Tomcat 7 中运行两个 Web 应用程序。

Tomcat 有一个logback-access.xml,它定义了两个附加程序。

我可以看到它在启动 tomcat 时被拾取,并且附加程序配置已正确解析。

我的问题是,如何让 web 应用程序使用其中定义的附加程序?

我尝试将<logger><root>元素放入logback-access文件中,但这会产生错误:

[logger] 没有适用的操作,当前 ElementPath 是 [[configuration][logger]]

, 和root类似appender-ref

我尝试将一个logback.xml文件放入我的战争文件中,既是WEB-INF/classes又是WEB-INF,但它似乎没有被拾取。

那么,我应该如何正确配置呢?

Tomcat中logback-access.xml的:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <append>true</append>
        <file>${catalina.base}/logs/my=app.log</file>
        <encoder>
            <pattern>combined</pattern>
        </encoder>
    </appender>

    <appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:5044</destination>

        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
<!-- cut specific config -->
            </providers>
        </encoder>
    </appender>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在:logback.xmlWEB-INF/classes

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <logger name="my.package" level="DEBUG"/>
    <logger name="com.amazonaws" level="INFO"/>
<!-- and several more loggers like this -->

    <root level="DEBUG">
        <appender-ref ref="FILE"/>
    </root>
    <root level="TRACE">
        <appender-ref ref="STASH"/>
    </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Jor*_*orn 6

如果有人遇到类似问题,我会将其留在这里。

首先,你根本不需要logback-access.xmltomcat 中的or Valve 。server.xml使用应用程序中的过滤器记录传入请求。

然后,如果您需要在服务器上而不是在应用程序中配置附加程序,请设计一个附加程序logback.xml并将其放入 tomcat 的lib文件夹中(通常是/usr/share/java/tomcat)。logback.xml您的应用程序中不需要 a 。该logback-commonjar 可以位于您的 war 中,也可以位于 tomcat lib 文件夹中,无论您喜欢哪个。

这样,应用程序将logback.xml在 tomcat 共享类路径上找到泛型,并使用它,就像它包含在战争中一样。