Как установить расположение журнала сервера в Tomcat

Недавно я начал работать в загрузочном приложении Spring. Приложение использует spring-logback для реализации логирования.

Приложение поставляется в комплекте как война в разных средах. Однако расположение журналов записи отличается в каждой среде и упоминается в файле logging.properties.

Поэтому мне в настоящее время приходится каждый раз менять локацию перед подготовкой к войне.

Как я могу установить путь к журналам в конфигурации Tomcat, чтобы путь автоматически выбирался для среды.

В настоящее время приложение mu logback выглядит следующим образом:

<appender name="FILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logging.file}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

        <!-- daily rollover -->
        <fileNamePattern>${logging.file}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>${log.file.size}</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <maxHistory>${log.file.history}</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>${logging.pattern.file}</pattern>
    </encoder>
</appender>

Все свойства здесь взяты из logging.properties файла внутри src/main/resources


person Saurabh Tiwari    schedule 22.07.2019    source источник


Ответы (1)


spring-boot предоставляет несколько настроек logging.*, которые можно применить в application.properties, например:

logging.level.=DEBUG
logging.file=myfile.log
logging.path=d:/logs/  

Если вы установите logging.path, Spring Boot записывает spring.log в указанный каталог. Имена могут быть точным расположением или относительными к текущему каталогу.

person Community    schedule 22.07.2019
comment
Привет @Aman Garg, как уже упоминалось, WAR должен быть независимым для разных сред. Если я помещу этот путь в application.properties (что имеет место в настоящее время), WAR нельзя будет повторно использовать на другом сервере без изменения пути для каждого сервера. - person Saurabh Tiwari; 22.07.2019
comment
@Saurabh, либо папка журналов создается на каждом сервере. В таком случае это не проблема. Или, во-вторых, вы хотите создавать файлы журналов на общем сервере (или по сетевому пути, поскольку он не поддерживает http). В таком случае вы также можете указать некоторый идентификатор в пути, например logging.path=logs\{some_other_application_property} - person ; 22.07.2019
comment
Привет, Аман, ты прав. Папка журнала создается на каждом сервере, но расположение отличается. Например, на сервере A это может быть C://logs, а на сервере B это может быть E://logs. Следовательно, мне придется изменить этот путь в logging.file в свойствах приложения для каждой среды. - person Saurabh Tiwari; 22.07.2019
comment
О, для этого Саурабха вы можете использовать относительный путь вместо абсолютного пути. Или вы можете использовать профили spring для каждого сервера. - person ; 22.07.2019