web-dev-qa-db-ja.com

logbackログファイルの宛先フォルダを設定する方法

アペンダーごとに設定するのではなく、すべてのログファイルを作成する場所を指定できるように、単一の宛先フォルダーを設定する方法はありますか?

8
user79074

ログバック構成ファイルでプロパティを定義し、以下のように使用できます

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

ログバックは、システムプロパティまたは別のプロパティファイルから変数を読み取ることもできることに注意してください。詳細については、 手動 に従ってください。

10
Andy Dufresne

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>
2
albogdano

スプリングブートアプリを持っていて、fat .jarsystemdサービスとして。

ユーザーのホームディレクトリを基準にして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でユーザーのホームパスを取得する

logback.xmlのアプリケーションプロパティへのアクセス

Springブートログパス

ログファイルの宛先フォルダを設定する方法をログバック

0
razvang