【问题标题】:LOGBACK: Writing the log to a file in the classpathLOGBACK:将日志写入类路径中的文件
【发布时间】:2013-11-02 04:50:55
【问题描述】:

我最近开始使用 Logback,并且正在阅读官方文档。在我的一个项目中实现它时,我想知道是否有办法将日志写入类路径上的文件或目标文件夹/logs/myapp.log 中的某个位置?我在官方文档上找不到太多信息(是的,我已经阅读了变量替换)。

这是我的 logback.xml:

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>clientLog.log</file>
        <append>true</append>
        <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder 
            by default -->
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n
            </pattern>
        </encoder>
    </appender>


    <root level="INFO">
        <appender-ref ref="FILE" />

    </root>

</configuration>

现在我希望在目标文件夹(MAVEN 项目)中创建 clientLog.log 文件。任何指针将不胜感激。

【问题讨论】:

  • 你试过target/logs/clientLog.log吗? project.build.directory,即目标文件夹在运行时不可用。
  • 是的,我试过了。似乎不起作用。然而,有效的是 {catalina.base} 属性(我使用的是 tomcat)。

标签: java maven classpath logback


【解决方案1】:

我怀疑您会找到一种标准机制来写入应用程序类路径上的文件。类路径中的内容通常是只读的。

同样,您不会在构建环境中的某个位置(例如“目标”目录)找到显式支持日志的机制。应用程序通常不在构建环境中运行。

所以最实用的解决方案可能是拥有两个独立的日志记录配置文件;即一个用于您的开发平台,另一个用于您的部署平台。在不同的日志配置文件中使用不同的日志文件路径名。


如果相对路径名 target/logs/clientLog.log 不起作用,那么当您的应用程序(例如 tomcat 服务器)启动时,可能是某些东西正在改变“当前目录”。但是(AFAIK)这对于 Tomcat 来说是正常的。

【讨论】:

    【解决方案2】:

    如果我理解您的问题,那么我想您可以通过将路径设置为环境变量来完成您的任务。以下是您必须做的事情:

    1. 创建一个变量,在您的 logback.xml 文件中说“LOGDIR”

    &lt;property name="LOGDIR" value="${app.workdir}/log" /&gt;

    1. 在 FILE APPENDER 中,添加文件路径为:

    &lt;File&gt;${LOGDIR}/${FILE_NAME}-${bySecond}.log&lt;/File&gt;

    您的文件将在 $LOGDIR 目录下创建。现在的问题是如何设置“LOGDIR”值。

    在您的 JAVA 应用程序中,将 app.workdir 设置为系统变量 i,e

    System.setProperty("app.workdir", "YOUR_TARGET_PATH")

    如果您感到困惑,请告诉我。

    【讨论】:

      【解决方案3】:

      如果你使用 mac,请使用绝对路径,例如 ${catalina.base}/userLog.%d{yyyy-MM-dd}.log 在tomcat下

      它不适用于像 ../userLog.%d{yyyy-MM-dd}.log 这样的相对路径 所以我认为使用一些变量总是好的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-24
        • 2015-03-19
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        • 1970-01-01
        相关资源
        最近更新 更多