1概要


Logback

は、Java Communityで最も広く使用されているロギングフレームワークの1つです。

Log4j

に代わるものです。LogbackはLog4jよりも高速な実装を提供し、設定のためのより多くのオプションを提供し、古いログファイルをより柔軟にアーカイブできます。

この紹介では、Logbackのアーキテクチャを紹介し、それを使用してアプリケーションをより良くする方法を説明します。


2ログバックアーキテクチャ

Logbackアーキテクチャは3つのクラスで構成されています。

Logger



Appender

、および

Layout

ロガーはログメッセージのコンテキストです。これは、アプリケーションがログメッセージを作成するために対話するクラスです。

アペンダはログメッセージを最終的な送信先に配置します。ロガーは複数のアペンダを持つことができます。私たちは通常、アペンダーはテキストファイルに添付されていると考えていますが、それよりもログバックの方がはるかに強力です。

レイアウトはメッセージを出力用に準備します。 Logbackはメッセージをフォーマットするためのカスタムクラスの作成と既存のもののための堅牢な設定オプションをサポートします。


3セットアップ


3.1. Mavenの依存関係

Logbackは、Java(SLF4J)用の簡易ロギングファサードをネイティブインタフェースとして使用します。メッセージのロギングを開始する前に、LogbackとSlf4jを

pom.xml

に追加する必要があります。

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.8.0-beta2</version>
    <scope>test</scope>
</dependency>

Maven Centralのhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22ch.qos.logback%22%20AND%20a%3A%22logback-core%22[latestバージョンは[Logback Core]およびhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.slf4j%22%20AND%20a%3A%22slf4j-api%22

slf4j-api

]。


3.2. クラスパス

ログバックでは、ランタイムのクラスパスにhttps://search.maven.org/classic/#search%7Cga%7C1%7Clogback-classic[

logback-classic.jar

]も必要です。

テストの依存関係として、これを

pom.xml

に追加します。

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

4.基本的な例と設定

アプリケーションでLogbackを使用する簡単な例から始めましょう。

まず、設定ファイルが必要です。

logback.xml

という名前のテキストファイルを作成し、クラスパスのどこかに配置します。

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS}[%thread]%-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="STDOUT"/>
  </root>
</configuration>

次に、

main

メソッドを持つ単純なクラスが必要です。

public class Example {

    private static final Logger logger
      = LoggerFactory.getLogger(Example.class);

    public static void main(String[]args) {
        logger.info("Example log from {}", Example.class.getSimpleName());
    }
}

このクラスは

Logger

を作成し、

info()

を呼び出してログメッセージを生成します。


Example

を実行すると、メッセージがコンソールに記録されます。

20:34:22.136[main]INFO Example - Example log from Example

Logbackがとても人気がある理由は簡単にわかります。数分で稼働します。

この設定とコードは、これがどのように機能するかについていくつかのヒントを与えてくれます。

  1. クラス名を参照する

    __appender


    named

    STDOUT__があります.


ConsoleAppender.

。ログメッセージの形式を記述するパターンがあります。

  1. 私たちのコードは

    Logger

    を作成し、私たちはそれを通して私たちのメッセージを渡しました


info()

メソッド


_.

_

基本を理解できたので、もう少し詳しく見てみましょう。


5ロガーコンテキスト


5.1. コンテキストを作成する

Logbackにメッセージを記録するために、SLF4JまたはLogbackからの

Logger

を初期化しました。

private static final Logger logger
  = LoggerFactory.getLogger(Example.class);

そしてそれを使った:

logger.info("Example log from {}", Example.class.getSimpleName());

これがロギングのコンテキストです。それを作成したとき、私たちは

LoggerFactory

をクラスに渡しました。これは

Logger

に名前を与えます(__Stringを受け付けるオーバーロードもあります)。

ロギングコンテキストは、Javaオブジェクト階層とよく似た階層にあります。

  1. ** ロガーの名前の後にドットが続くと、その前にaが付きます

子孫ロガーの名前



ロガーとの間に先祖がいない場合、ロガーは親

子**

たとえば、以下の

Example

クラスは

com.baeldung.logback

パッケージにあります。

com.baeldung.logback.appenders

パッケージには、

ExampleAppender

という別のクラスがあります。


ExampleAppender’s Logger

は、__Example’s Loggerの子です。

  • すべてのロガーは事前定義されたルートロガーの子孫です。


Logger

には

Levelがあり、これは設定によって、または

Logger.setLevel()で設定できます。コードでレベルを設定すると、設定ファイルが上書きされます。

可能なレベルは、優先順位の高い順です。

TRACE、DEBUG、INFO、WARN

、および


_ERROR .

_





各レベルには、そのレベルでメッセージを記録するために使用する対応するメソッドがあります。

  • ロガーが明示的にレベルを割り当てられていない場合、それは最も近い先祖のレベルを継承します** ルートロガーはデフォルトで__DEBUGになります。


5.2. コンテキストを使う

ロギング階層内でコンテキストを使用する方法を示すプログラム例を作成しましょう。

ch.qos.logback.classic.Logger parentLogger =
  (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback");

parentLogger.setLevel(Level.INFO);

Logger childlogger =
  (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("com.baeldung.logback.tests");

parentLogger.warn("This message is logged because WARN > INFO.");
parentLogger.debug("This message is not logged because DEBUG < INFO.");
childlogger.info("INFO == INFO");
childlogger.debug("DEBUG < INFO");

これを実行すると、次のメッセージが表示されます。

20:31:29.586[main]WARN com.baeldung.logback - This message is logged because WARN > INFO.
20:31:29.594[main]INFO com.baeldung.logback.tests - INFO == INFO

まず

com.baeldung.logback

という名前の

Logger

を取得し、それを

ch.qos.logback.classic.Logger.

にキャストします。

次の文でレベルを設定するには、Logbackコンテキストが必要です。 SLF4Jの抽象ロガーは__setLevel()を実装していません。

コンテキストのレベルを

INFO

に設定し、次に

com.baeldung.logback.tests.

という別のロガーを作成します。

階層を示すために、コンテキストごとに2つのメッセージを記録します。

Logbackは

WARN、

、および

INFO

メッセージをログに記録し、


_ DEBUG

_





メッセージをフィルタリングします。

それでは、ルートロガーを使用しましょう。

ch.qos.logback.classic.Logger logger =
  (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("com.baeldung.logback");
logger.debug("Hi there!");

Logger rootLogger =
  (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(org.slf4j.Logger.ROOT__LOGGER__NAME);
logger.debug("This message is logged because DEBUG == DEBUG.");

rootLogger.setLevel(Level.ERROR);

logger.warn("This message is not logged because WARN < ERROR.");
logger.error("This is logged.");

このスニペットを実行すると、これらのメッセージが表示されます。

20:44:44.241[main]DEBUG com.baeldung.logback - Hi there!
20:44:44.243[main]DEBUG com.baeldung.logback - This message is logged because DEBUG == DEBUG.
20:44:44.243[main]ERROR com.baeldung.logback - This is logged.

結論として、私たちは

Logger

コンテキストから始めて

DEBUG

メッセージを出力しました。

次に、静的に定義された名前を使ってルートロガーを取得し、そのレベルを__ERRORに設定しました

そして最後に、Logbackは実際にはエラーより少ない文をフィルタリングします。


5.3. パラメータ化されたメッセージ

上記のサンプルスニペットのメッセージとは異なり、最も有用なログメッセージには__Stringsを追加する必要がありました。

次のようなメッセージを考えます。

log.debug("Current count is " + count);

Loggerがメッセージをログに記録するかどうかにかかわらず、メッセージを作成するコストがかかります。

Logbackは、パラメータ化されたメッセージで代替手段を提供します。

log.debug("Current count is {}", count);

中括弧\ {}は任意の

Object

を受け入れ、ログメッセージが必要であることを確認した後でのみメッセージを作成するためにその

toString()

メソッドを使用します。

いくつかの異なるパラメータを試してみましょう。

String message = "This is a String";
Integer zero = 0;

try {
    logger.debug("Logging message: {}", message);
    logger.debug("Going to divide {} by {}", 42, zero);
    int result = 42/zero;
} catch (Exception e) {
    logger.error("Error dividing {} by {} ", 42, zero, e);
}

このスニペットは次のようになります。

21:32:10.311[main]DEBUG com.baeldung.logback.LogbackTests - Logging message: This is a String
21:32:10.316[main]DEBUG com.baeldung.logback.LogbackTests - Going to divide 42 by 0
21:32:10.316[main]ERROR com.baeldung.logback.LogbackTests - Error dividing 42 by 0
java.lang.ArithmeticException:/by zero
  at com.baeldung.logback.LogbackTests.givenParameters__ValuesLogged(LogbackTests.java:64)
...


String、

int、

、および

Integer__をパラメーターとして渡す方法がわかります。

また、

Exception

がロギングメソッドの最後の引数として渡されると、Logbackはスタックトレースを表示します。

** 6. 詳細な設定

前の例では、コンソールにログメッセージを出力するために

section 4

で作成した11行の設定ファイルを使用していました。これはLogbackのデフォルトの動作です。設定ファイルが見つからない場合は、

__ConsoleAppender

__を作成し、それをルートロガーに関連付けます。


6.1. 設定情報の場所

構成ファイルはクラスパスに配置し、

logback.xml

または__logback-test.xmlのいずれかの名前を付けることができます。

Logbackが設定データを見つける方法は次のとおりです。



  1. _logback-test.xml、logback.groovy、

    _





    という名前のファイルを検索します.

クラスパス内の

logback.xml

、この順序で。

  1. ライブラリがそれらのファイルを見つけられない場合は、使用を試みます

Javaの


ServiceLoader


の実装者を探す

com.qos.logback.classic.spi.Configurator.

。コンソールに直接ログを出力するように設定する

注:現在のバージョンのLogbackは、Java 9と互換性のあるバージョンのGroovyがないため、Groovy構成をサポートしません。

6.2. 基本構成

私たちのリンクを詳しく見てみましょう:#example[設定例]

ファイル全体が


_ <configuration>

_





タグにあります。


  • ConsoleAppender

    型の

    Appender

    を宣言し、それに

    STDOUT

    という名前のタグがあります。そのタグ内にネストされているのはエンコーダです。これは

    sprintf-style

    エスケープコードのようなパターンのパターンを持っています:**

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS}[%thread]%-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

最後に、

root

タグがあります。このタグは、ルートロガーを

DEBUG

モードに設定し、その出力を

STDOUT

という

Appender

に関連付けます。

<root level="debug">
    <appender-ref ref="STDOUT"/>
</root>


6.3. 設定のトラブルシューティング

ログバック構成ファイルは複雑になる可能性があるため、トラブルシューティングのための組み込みメカニズムがいくつかあります。

Logbackが設定を処理しているときにデバッグ情報を表示するには、デバッグログを有効にします。

<configuration debug="true">
  ...
</configuration>

Logbackは設定を処理するときにステータス情報をコンソールに表示します。

23:54:23,040 |-INFO in ch.qos.logback.classic.LoggerContext[default]- Found resource[logback-test.xml]
  at[file:/Users/egoebelbecker/ideaProjects/logback-guide/out/test/resources/logback-test.xml]23:54:23,230 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender
  of type[ch.qos.logback.core.ConsoleAppender]23:54:23,236 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as[STDOUT]23:54:23,247 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type
 [ch.qos.logback.classic.encoder.PatternLayoutEncoder]for[encoder]property
23:54:23,308 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
23:54:23,309 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named[STDOUT]to Logger[ROOT]23:54:23,310 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
23:54:23,313 |-INFO in[email protected]- Registering current configuration
  as safe fallback point

設定ファイルの解析中に警告またはエラーが発生した場合、Logbackはステータスメッセージをコンソールに書き込みます。

ステータス情報を印刷するための2番目のメカニズムがあります。

<configuration>
    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>
    ...
</configuration>


  • StatusListener

    は設定中およびプログラムの実行中にステータスメッセージをインターセプトして表示します** 。

すべての構成ファイルからの出力が印刷されるため、クラスパス上の「不正な」構成ファイルを見つけるのに便利です。


6.4. 設定を自動的に再読み込みする

アプリケーションの実行中にロギング設定をリロードすることは、強力なトラブルシューティングツールです。 Logbackは

scan

パラメータでこれを可能にします。

<configuration scan="true">
  ...
</configuration>

デフォルトの動作では、60秒ごとに設定ファイルの変更をスキャンします。

scanPeriod

を追加してこの間隔を変更します。

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

ミリ秒、秒、分、または時間で値を指定できます。

6.5.

Loggers

を変更する

上記のサンプルファイルでは、ルートロガーのレベルを設定してコンソール


_Appender

_



に関連付けました。

任意のロガーのレベルを設定できます。

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS}[%thread]%-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <logger name="com.baeldung.logback" level="INFO"/>
    <logger name="com.baeldung.logback.tests" level="WARN"/>
    <root level="debug">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

これをクラスパスに追加して、次のコードを実行しましょう。

Logger foobar =
  (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.foobar");
Logger logger =
  (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback");
Logger testslogger =
  (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback.tests");

foobar.debug("This is logged from foobar");
logger.debug("This is not logged from logger");
logger.info("This is logged from logger");
testslogger.info("This is not logged from tests");
testslogger.warn("This is logged from tests");

私達はこの出力を見ます:

00:29:51.787[main]DEBUG com.baeldung.foobar - This is logged from foobar
00:29:51.789[main]INFO com.baeldung.logback - This is logged from logger
00:29:51.789[main]WARN com.baeldung.logback.tests - This is logged from tests

プログラムでLoggerのレベルを設定しないことで、設定はそれらを設定します。


com.baeldung.foobar




は、ルートロガーから




_

DEBUG


_

** を継承しています。

ロガー




もルートロガーから

appender-ref

を継承します。以下で見るように、これを上書きすることができます。


6.6. 可変置換

ログバック設定ファイルは変数をサポートします。設定スクリプトの内部または外部で変数を定義します。変数は、値の代わりに設定スクリプト内の任意の時点で指定できます。

たとえば、以下は

FileAppender

の設定です。

<property name="LOG__DIR" value="/var/log/application"/>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${LOG__DIR}/tests.log</file>
    <append>true</append>
    <encoder>
        <pattern>%-4relative[%thread]%-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

設定の先頭で、


_ LOG

DIR .

_



という名前の


property






を宣言しました。次に、それを

appender__定義内のファイルへのパスの一部として使用しました。

プロパティは設定スクリプトの

<property>

タグで宣言されています。

しかし、それらはシステムプロパティなどの外部ソースからも入手できます。この例では

property

宣言を省略し、コマンドラインで

LOG

DIR__の値を設定できます。

$ java -DLOG__DIR=/var/log/application com.baeldung.logback.LogbackTests

Logbackは変数をテキスト置換として実装しています。変数置換は、値を指定できる構成ファイル内の任意の時点で発生する可能性があります。


7.

アペンダー



Loggers



LoggingEvents



Appendersに渡します。


Appenders

はロギングの実際の作業を行います。私たちは通常ログをファイルやコンソールに行くものと考えていますが、ログバックはもっと多くのことが可能です。

Logback-core

はいくつかの便利なアペンダを提供します。


7.1.

ConsoleAppender



__ConsoleAppender






の動作を確認しました。その名前にもかかわらず、

ConsoleAppender




System.out






または

System.err.__にメッセージを追加します。

I/Oをバッファするために

OutputStreamWriter

が使用されているため、

System.err

に転送してもバッファリングされない書き込みは発生しません。


7.2.

FileAppender




_FileAppender

_





はファイルにメッセージを追加します。幅広い構成パラメータをサポートしています。ファイルアペンダを基本設定に追加しましょう。

<configuration debug="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS}[%thread]%-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>tests.log</file>
        <append>true</append>
        <encoder>
            <pattern>%-4relative[%thread]%-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.baeldung.logback" level="INFO"/>
    <logger name="com.baeldung.logback.tests" level="WARN">
        <appender-ref ref="FILE"/>
    </logger>

    <root level="debug">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>


FileAppender



<file> .

を介してファイル名で設定されます。テストを数回実行すると、ログ出力が同じファイルに追加されることがわかります。

上記からテストを再実行すると、

com.baeldung.logback.tests

からのメッセージはコンソールとtests.logという名前のファイルの両方に送信されます。 ** 子孫ロガーは、ルートロガーと

ConsoleAppender

、および__FileAppenderとの関連付けを継承しています。

この動作を無効にすることができます。

<logger name="com.baeldung.logback.tests" level="WARN" additivity="false" >
    <appender-ref ref="FILE"/>
</logger>

<root level="debug">
    <appender-ref ref="STDOUT"/>
</root>


additivity



__false






に設定すると、デフォルトの動作が無効になります。

Tests__はコンソールにログを記録せず、またその子孫もログに記録しません。


7.3.

RollingFileAppender


多くの場合、ログファイルを同じファイルに追加することは、必要な動作ではありません。時間、ログファイルサイズ、またはその両方に基づいてファイルを「ロール」させます。

このために、__RollingFileAppenderがあります。

<property name="LOG__FILE" value="LogFile"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG__FILE}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- daily rollover -->
        <fileNamePattern>${LOG__FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>

        <!-- keep 30 days' worth of history capped at 3GB total size -->
        <maxHistory>30</maxHistory>
        <totalSizeCap>3GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
        <pattern>%-4relative[%thread]%-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>



_RollingFileAppender






には


RollingPolicyがあります。






この設定例では、


TimeBasedRollingPolicyがあります。

_




__FileAppenderと同様に、このアペンダにファイル名を設定しました。以下のファイル名を再利用するため、プロパティを宣言してこれを使用しました。



_RollingPolicy .






の中に

fileNamePattern

を定義します。このパターンは、ファイルの名前だけでなく、それらをロールする頻度も定義します。


TimeBasedRollingPolicy

_





はパターンを調べ、最も詳細に定義された周期でロールします。

例えば:

<property name="LOG__FILE" value="LogFile"/>
<property name="LOG__DIR" value="/var/logs/application"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG__DIR}/${LOG__FILE}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG__DIR}/%d{yyyy/MM}/${LOG__FILE}.gz</fileNamePattern>
        <totalSizeCap>3GB</totalSizeCap>
    </rollingPolicy>

アクティブなログファイルは


_/var/logs/application/LogFileです。






このファイルは毎月の初めに

_

/今年/今月/LogFile.gzにロールオーバーします。


** 新しいアクティブファイル

アーカイブファイルの合計サイズが3GBに達すると、


_RollingFileAppender

_





は先入れ先出し方式でアーカイブを削除します。

週、時、分、秒、さらにはミリ秒のコードがあります。

Logbackはhttps://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicyを参照しています。


__RollingFileAppender






にはファイル圧縮のサポートも組み込まれています。それらを

LogFile.gz.__と名付けたので、それは私たちのロールファイルを圧縮します。



_TimeBasedPolicy






がローリングファイルの唯一の選択肢ではありません。 Logbackは


SizeAndTimeBasedRollingPolicy、






も提供します。これは現在のログファイルのサイズと時間に基づいてロールされます。ロガーが起動されるたびにログファイル名をロールする


FixedWindowRollingPolicy

_





も提供します。

独自の__https://logback.qos.ch/manual/appenders.html#onRollingPolicies[RollingPolicy]を書くこともできます。

** 7.4. カスタムアペンダ

Logbackの基本アペンダクラスの1つを拡張することによって、カスタムアペンダを作成できます。カスタムアペンダリンクを作成するためのチュートリアルがあります:/custom-logback-appender[ここ]。


8

レイアウト



レイアウト

形式のログメッセージ。 Logbackの他の部分と同様に、


_Layouts

_





は拡張可能で、https://logback.qos.ch/manual/layouts.html#writingYourOwnLayout[自分で作成することができます。それからいくつか。

これまでのすべての例で

PatternLayout

を使用しました。

<encoder>
    <pattern>%d{HH:mm:ss.SSS}[%thread]%-5level %logger{36} - %msg%n</pattern>
</encoder>

この設定スクリプトには、____PatternLayoutEncoderの設定が含まれています。


<pattern>

タグ内のテキストは、ログメッセージのフォーマット方法を定義します。

PatternLayout

は、パターンを作成するためのさまざまな変換語とフォーマット修飾子を実装しています。

これを分解しましょう。

PatternLayout

は変換語を%で認識するので、このパターンの変換は次のようになります。


  • %d \ {HH:mm:ss.SSS}

    – 時、分、秒、

ミリ秒
**

[%thread]

– ログメッセージを生成するスレッド名。

角括弧で
**

% – 5level

– ロギングイベントのレベル、5文字にパディング


  • %logger \ {36}

    – ロガーの名前(35文字に切り捨て)


  • %msg%n

    – ログメッセージとそれに続くプラットフォーム依存行

区切り文字

そのため、これに似たメッセージが表示されます。

21:32:10.311[main]DEBUG com.baeldung.logback.LogbackTests - Logging message: This is a String

変換ワードとフォーマット修飾子の完全なリストはhttps://logback.qos.ch/manual/layouts.html#conversionWord[here]にあります。

9.まとめ

この広範なガイドでは、アプリケーションでLogbackを使用するための基礎について説明しました。

Logbackのアーキテクチャの3つの主要コンポーネントを調べました。

ロガー、アペンダ、そしてレイアウト。 Logbackには強力な設定スクリプトがあり、これを使ってメッセージのフィルタリングとフォーマットのためにコンポーネントを操作していました。また、ログファイルの作成、ロールオーバー、整理、および圧縮に最もよく使用される2つのファイルアペンダを調べました。

いつものように、コードスニペットはhttps://github.com/eugenp/tutorials/tree/master/logging-modules/logback[GitHubに追加]を見つけることができます。