【開発経験】SpringBootログSLF4j+Logbackログモジュール化


        私の記事を読んだら、本番環境でログをチェックすることで拷問を受けたに違いありません。実稼働環境にELKのようなログクエリツールがない場合は、ログのモジュール化とファイルの区別により、ログ情報をより迅速に見つけることができます。例:注文ログ、要求ログ、応答ログ、サービス間の相互呼び出しログなど。

1.現在のクラスのログは別のファイルに保存されます

たとえば、orderServiceのログは個別に保存する必要があります。

@Service		
@Slf4j(topic = "order")
public class OrderServiceImpl{
    
    

}

        注釈のtopicように設定し、タグorderlogback.xml追加して、ログレベルをに設定します(ログレベルはそれ自体で設定されます)。loggerinfo

<logger name="order" level="info">
    <appender-ref ref="api-order"/>
</logger>

        印刷位置を設定しますappenderappender-refの値は、のプロパティと一致しているref必要があります。appendername

<appender name="order" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}/order.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 按天回滚  -->
        <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/order.%d{yyyy-MM-dd}.log</fileNamePattern>
        <!-- 日志最大的历史7天 -->
        <maxHistory>7</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>${log.pattern}</pattern>
    </encoder>
</appender>

        上記の設定で説明したように、当日のログがに印刷されorder.log、履歴ログが日ごとに保存され、最大7日間のログが保存されます。ログの印刷形式は次のとおりですlog.pattern(ログの印刷形式については、オンラインで多数あり、自分で設定できます

2.特定のログが特定のファイルにあります

        注文全体のプロセス全体を記録する場合、この注文のロジックは複数のクラスで記述される可能性があるため、1つのクラスでの印刷は実行できません。したがって、複数の場所を印刷する必要があります。印刷方法は次のとおりです。

private Logger orderlog = LoggerFactory.getLogger("order");

LoggerFactory.getLoggerメソッド        を使用してログオブジェクトを作成します。着信order表現は、注文固有の印刷ログオブジェクトです。注文の作成、注文の変更、その他の手順など、注文に必要な手順では、この方法でログ印刷を実行できます。

logback.xml追加        ._ logger_ 同じことnameをする必要がありorderます。appender-refログの印刷場所を設定しますドアツードアappender構成と同様に、自分で構成できます。

<logger name="order" level="info">
    <appender-ref ref="order"/>
</logger>

3.モジュールに従って印刷します

        注文モジュール、商品モジュール、ユーザーモジュールなどは、固定パッケージ名に従ってログを印刷します。例として注文モジュールを取り上げ、パッケージのパスである新しいモジュールを追加し、その印刷パスを追加してlogger設定nameます。値がclasspathの場合、テーブル名はこのクラスのログを抽出します。orderappender-refname

    <logger name="com.order.service" level="info">
        <appender-ref ref="order"/>
    </logger>

要約する

        すべての抽出はロガータグを使用して行われます。その名前は、トピック名、一般名、パッケージ名、クラス名にすることができます。

  1. トピック名は、アノテーション@ Slf4j(topic = "order")によって設定されます。
  2. 共通名はLoggerFactory.getLogger( "order")によって設定されます。
  3. パッケージ名とクラス名はロガータグで設定できます。

        各ロガータグは、独自のログの基本を設定できます。通常、独自のビジネスシステムのログレベルは情報です。他のフレームワークを参照している場合、通常、ログレベルは警告されます。ログバックには5つのレベルがあります。つまり、TRACE <DEBUG <INFO <WARN<ERRORです。

        ファイルに単独で抽出されたログは、デフォルトrootでタグのログと複製されます。つまりloggerrootラベルはデフォルトでラベルから継承されます。ログが繰り返されないようにする場合は、に設定できadditivityますfalse

<logger name="order" level="info" additivity="false"/>

おすすめ

転載: blog.csdn.net/qq_30285985/article/details/120518978