Logback:如何从" tomcat / bin"更改日志目录申请相关?

时间:2015-04-03 10:18:14

标签: java tomcat logging slf4j logback

我想将 slf4j logback 一起用于记录。

您可以在下面看到我的logback.xml:

<configuration>
    <appender name="FILE-MODULE" class="ch.qos.logback.core.FileAppender">
        <file>module.log</file>
        <encoder>
            <pattern>
                %date %level [%thread] %logger{10} [%file:%line] %msg%n
            </pattern>
        </encoder>
    </appender>

    <logger name="module" level="debug" additivity="false">
        <appender-ref ref="FILE-MODULE" />
    </logger>
</configuration>

问题是:当我将应用程序部署到Tomcat时,日志文件存储在 tomcat / bin 文件夹中,我想将其存储在myapp文件夹中( tomcat / webapp / myapp )。

我该怎么做?

2 个答案:

答案 0 :(得分:8)

嗯,我解决了我的问题,但这不是一个很好的解决方案(我认为)。

首先,我将绝对路径放在.property文件中的日志文件中。例如:

logback.log.location=d:\Tomcat\tomcat_8.0.0-RC5\webapps\module\logs

然后我在logback.xml中使用该属性:

<configuration>
    <property file="src\main\resources\system_config.properties" />
    <appender name="FILE-MODULE" class="ch.qos.logback.core.FileAppender">
        <file>${logback.log.location}\module.log</file>
        <encoder>
            <pattern>
                %date %level [%thread] %logger{10} [%file:%line] %msg%n
            </pattern>
        </encoder>
    </appender>

    <logger name="module" level="debug" additivity="false">
        <appender-ref ref="FILE-MODULE" />
    </logger>
</configuration>

您可以看到更多详细信息here。这是我使用的example

但是在上面的解决方案中,我们有特定于环境的日志绝对路径。这很难看。当然,我们可以使用系统变量 CATALINA_HOME 来避免绝对路径。但是,据我所知,CATALINA_HOME可能是未定义的。或者,我们可以使用另一个tomcat实例,它不在CATALINA_HOME中。

也许某人有更好的解决方案与环境无关?


<强>更新

另一种解决方案:

在logback.xml中使用relative(到tomcat \ bin)路径而不是绝对路径:

<configuration>
    <appender name="FILE-MODULE" class="ch.qos.logback.core.FileAppender">
        <file>..\webapps\module\module.log</file>
        <encoder>
            <pattern>
                %date %level [%thread] %logger{10} [%file:%line] %msg%n
            </pattern>
        </encoder>
    </appender>

    <logger name="module" level="debug" additivity="false">
        <appender-ref ref="FILE-MODULE" />
    </logger>
</configuration>

这是我尝试实施的第一个想法。我不知道,为什么之前没有用。也许还有其他问题。此外,thisthis文章使我感到困惑。

但现在这个解决方案运行正常。这正是我要找的=)

答案 1 :(得分:3)

如果您不想将日志保存在Tomcat的bin文件夹中,请在{strong> logback.xml 文件中使用${catalina.base}作为文件路径前缀。

<file>${catalina.base}/logs/log.log</file>

这里的日志文件将保存在Tomcat的现有日志文件夹中,而不是bin中。