/ / Jak uczynić ścieżkę lokalizacji dynamiczną w xml - xml, linux, spring, logging, logback

Jak dokonać dynamicznej lokalizacji ścieżki w xml - xml, linux, spring, logging, logback

mam logback.xml skonfigurowany w projekcie MVC + hibernate, działa dobrze na mojej lokalnej maszynie. lokalna maszyna ma Windows 10 OS zainstalowany.

Chcę uruchomić kod maszyny produkcyjnej, która ma Linux zainstalowany.

Co chce wiedzieć, czy jest jakiś sposób na zrobienie LOG_PATH i LOG_ARCHIVE lokalizacje dynamiczne według systemu operacyjnego? Tak więc, gdy kod zostanie wdrożony na maszynie produkcyjnej, nie musiałbym ręcznie zmieniać lokalizacji ścieżek.

Każda pomoc jest doceniana, Daj mi znać, jeśli cokolwiek innego jest potrzebne. Z góry dziękuję. :RE

<?xml version="1.0" encoding="utf-8"?>
<configuration debug="true" scan="true" scanPeriod="30 seconds">
<property name="LOG_PATH" value="D:/coinLogs" />
<property name="LOG_ARCHIVE" value="${LOG_PATH}/archive" />

<appender name="Console-Appender" class="ch.qos.logback.core.ConsoleAppender">
<layout>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}] - [%X{requestId}] - %p %c -- %m%n</pattern>
</layout>
</appender>

<appender name="File-Appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/logfile.log</file>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}] - [%X{requestId}] - %p %c -- %m%n
</pattern>
<outputPatternAsHeader>true</outputPatternAsHeader>
</encoder>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOG_ARCHIVE}/rollingfile.log.%d{yyyy-MM-dd}.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>


<logger name="coinPay.logbackxml" level="info" additivity="false">
<appender-ref ref="Console-Appender" />
<appender-ref ref="File-Appender" />
</logger>

<!-- To remove extra hibernate logs -->
<logger name="org.hibernate">
<level value="info" />
</logger>

<root>
<appender-ref ref="Console-Appender" />
<appender-ref ref="File-Appender" />
</root>

</configuration>

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz stworzyć logback plik w zewnętrznej lokalizacji i przekazać go jako parametr podczas uruchamiania aplikacji, jak pokazano poniżej.

java -Dlogback.configurationFile=path/logback.xml MyApp

Dodanie następującej konfiguracji do logback.xml skanuje plik co 30 sekund w przypadku jakichkolwiek zmian. Jeśli zostanie wykryta zmiana, ponownie skonfiguruje ustawienia dziennika.

<configuration scan="true" scanPeriod="30 seconds" >
...
</configuration>

Teraz, jeśli chcesz coś zmienić, możesz to bezpośrednio zmienić logback.xml