アペンダーごとに設定するのではなく、すべてのログファイルを作成する場所を指定できるように、単一の宛先フォルダーを設定する方法はありますか?
ログバック構成ファイルでプロパティを定義し、以下のように使用できます
<configuration>
<property name="USER_HOME" value="/home/sebastien" />
<appender name="SPRING_LOGS" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/spring.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/myApp.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>
ログバックは、システムプロパティまたは別のプロパティファイルから変数を読み取ることもできることに注意してください。詳細については、 手動 に従ってください。
Logbackを操作するためにSpring Bootを構成するのに多くの時間を浪費しました。他の人が時間を無駄にしないように、構成を共有したいと思います。
私の例は上記のAndyDufresneに似ていますが、1つのキーの違いがあります-<property>
タグはありません。私の場合、これは非常に重要でした。<property name="logs_dir" value="." />
を含めると、システムプロパティを使用してオーバーライドできなくなり、次のようにしたかったからです。
Java -jar -Dlogs_dir=~/newLogsDir yourApp.jar
また、デフォルト値がパス変数${logs_dir:-.}
内に設定されていることにも注意してください。お役に立てれば:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-20(%d{yyyy-MM-dd HH:mm:ss} %highlight([%-5level])) %msg%n</pattern>
</encoder>
</appender>
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs_dir:-.}/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover monthly -->
<fileNamePattern>system-%d{yyyy-MM}.log.Zip</fileNamePattern>
<maxHistory>12</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-26(%d [%-5level]) %logger{35} - %msg%n</pattern>
</encoder>
</appender>
</configuration>
スプリングブートアプリを持っていて、fat .jar
systemdサービスとして。
ユーザーのホームディレクトリを基準にしてLOG_PATHを設定する方法について、数時間苦労しました。
これが私のために働いたものです:
application.properties
私が持っています:logging.path=${HOME}/attach_logs
logback-spring.xml
私が持っています:<springProperty scope="context" name="LOG_PATH" source="logging.path"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/console.log</file>
参照:
Spring Bootのapplication.propertiesでユーザーのホームパスを取得する