私のlogback.xml構成ファイルには、このアペンダーがあります。
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>classpath:addressbookLog.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{dd MMM yyyy;HH:mm:ss} %-5level %logger{36} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<FileNamePattern>classpath:addressbookLog.%i.log.Zip</FileNamePattern>
<MinIndex>1</MinIndex>
<MaxIndex>10</MaxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>2MB</MaxFileSize>
</triggeringPolicy>
</appender>
クラスパスを介して相対的な方法でログを印刷するファイルへのパスを指定しますが、機能しません。ファイルaddressbookLog.logが作成および書き込まれません。 /home/andrea/.../resources/addressbookLog.logのような絶対パスでのみ動作します。クラスパスで動作させる方法についてのアイデアはありますか?
第3章:ログバック構成:変数置換 は、外部で定義された変数を参照するさまざまな方法を示しました。 system properties
およびclasspath
。
重要な構成は、すべての変数を含む別のファイルを作成することです。ファイルの代わりに、クラスパス上のリソースへの参照を作成することもできます。例えば.
<configuration>
<property resource="resource1.properties" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<!-- Here we can refer to the variable
defined at the resource1.properties -->
<file>${USER_HOME}/myApp.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>
USER_HOME=/path/to/somewhere
resource1.properties
は、classpath
で利用可能なリソースです。
第3章:ログバック構成:変数置換 でフルバージョンを参照できます。これがお役に立てば幸いです。
<FileNamePattern>${user.dir}/logs/addressbookLog.%i.log.Zip</FileNamePattern>