【问题标题】:Logback: how to change log directory from "tomcat/bin" to application related?Logback:如何将日志目录从“tomcat/bin”更改为应用程序相关?
【发布时间】:2015-06-08 10:17:58
【问题描述】:

我想使用 slf4jlogback 进行日志记录。

你可以在下面看到我的 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 )。

我该怎么做?

【问题讨论】:

    标签: java tomcat logging slf4j logback


    【解决方案1】:

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

    首先,我将日志文件的绝对路径放在 .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 可以是未定义的。或者,我们可以使用另一个不在 CATALINA_HOME 中的 tomcat 实例。

    也许有人有更好的独立于环境的解决方案?


    更新

    另一种解决方案:

    在 logback.xml 中使用相对(到 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的文章让我很困惑。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 从 maven 运行 spring-boot 时效果很好!
      猜你喜欢
      • 1970-01-01
      • 2023-01-13
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2015-09-19
      • 1970-01-01
      • 2014-09-22
      相关资源
      最近更新 更多