如何将 logback 文件路径概括为 windows/linux OS?

How to generalize logback files paths to both windows/linux OS?

我有一个 java 应用程序。我的开发环境是 Windows OS,我的产品 OS 是 linux。 该应用程序需要 read/write OS 中的一些文件,其中包括 - 日志文件(我正在使用 logback 库)。 在我的 windows 开发环境中,我将日志路径配置为绝对位置:C://logger/my-app.log

以下是相关的logback.xml配置文件代码:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>C://logger/my-app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>C://logger/my-app-%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
        <charset>UTF-8</charset>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

但是,如前所述,我的产品环境是 linux OS。 我也想在 linux 机器中以绝对路径创建文件,并使用单个配置 xml 文件。 我不希望在已部署的 jar 文件的上下文中创建文件,而是在某个绝对路径中创建文件。 怎么做到的?

为了使 Web 应用程序可移植,无论 OS 是什么,都应生成日志文件。您必须使用 user.home 环境变量 属性。我在下面提供了对 Windows 和 Linux.

都有效的 logback 片段
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${user.home}/logs/my-app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>C://logger/my-app-%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
        <charset>UTF-8</charset>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>