Как обобщить пути файлов logback для обеих ОС Windows / Linux? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть приложение Java. Моя среда разработки - это ОС Windows, а моя производственная ОС - Linux. Приложению необходимо прочитать / записать некоторые файлы в ОС, среди которых - файлы журналов (я использую logback lib). В моей среде разработки 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. Я хочу создать файл по абсолютному пути также на машине с Linux, с одним файлом конфигурации XML. Я не хочу, чтобы файл создавался в контексте развернутого файла JAR, но по некоторому абсолютному пути. Как это можно сделать?

1 Ответ

1 голос
/ 25 октября 2019

Чтобы сделать веб-приложение переносимым, а файл журнала должен генерироваться независимо от любой ОС. Вы должны использовать user.home свойство переменной среды. Ниже приведен фрагмент журнала, который будет работать как в Windows, так и в Linux.

<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>
...