【问题标题】:Change where RollingFile log4j2 writes the log with variables更改 RollingFile log4j2 使用变量写入日志的位置
【发布时间】:2022-01-18 16:31:23
【问题描述】:

我需要能够修改我的 log4j2.xml 文件写入日志文件的位置。

我想创建一个与应用程序的 .jar (my/path/app.jar) 相同级别的文件夹来存储日志 (my/path/logs/log1.log)。

问题在于我无法从文件中获取我的 jar 的运行位置(可能会有所不同)(如果不需要,我不想使用环境变量)。你会怎么做?这是我的 log4j2.xml 文件

    <RollingFile name="rollingFile"
        fileName="my/path/application.log"
        filePattern="my/path/application.%d{dd-MMM}.log"
        ignoreExceptions="false">
        <PatternLayout>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" />
        </Policies>
        <DefaultRolloverStrategy>
        <!-- Delete logs older than 60 days -->
            <Delete basePath="my/route/">
                <IfLastModified age="60d" />
            </Delete>
        </DefaultRolloverStrategy>
    </RollingFile>

我已经看到您可以使用 spring 变量,但我不想实现该云依赖项(因为我不将它用于任何事情)。

在同一个问题中,如果在 IfLastModified 中添加文件夹的路径,我应该删除日志(在这种情况下每 60 天一次,不是吗?)

上下文:

  • 带有 spring 的 Java 应用程序
  • 可以更改我运行应用程序的操作系统

欢迎任何想法,谢谢!

【问题讨论】:

    标签: java spring-boot logging log4j2


    【解决方案1】:

    相对路径 (../path) 从您运行 .jar 的任何位置开始工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      相关资源
      最近更新 更多