Java APM エージェントを使用すると、 logs in context を取得でき、他の New Relic データのコンテキストでアプリのログを表示できます。 この機能の一般的な情報については、 「APM ログのコンテキスト」を 参照してください。
コンテキストオプションの自動ログ サポートされているフレームワークを使用している場合、コンテキスト内で APM ログを構成して、アプリのログとリンク メタデータを New Relic に自動的に送信する 2 つのオプションがあります。1 つのオプションは、ログを装飾するログ拡張機能を手動で構成し、それを自分自身に転送することです。もう 1 つのオプションは、Java エージェントがログの装飾と転送を自動的に処理するようにすることです。コンテキスト内の自動ログでサポートされているフレームワークには、次のものがあります。
Log4j1 1.2.17 以降 Log4j2 2.6 以降 ログバック1.1以降 7 月 (java.util.logging)JDK8+ JBoss Logging 1.3.0.Final から 2.x Dropwizard Logging (Logback インストルメンテーション経由で取得、以下の既知の問題を参照) 重要 JBoss ロギング
JBoss Logging は、ローカル装飾機能を JUL 計測に委譲するため、次の 2 つの計測モジュールによって完全に制御できます。
com.newrelic.instrumentation.java.logging-jdk8 :
com.newrelic.instrumentation.jboss.logging :
重要 Dropwizard のログに関する既知の問題
デフォルトでは、Dropwizard はログ バックエンドに Logback を使用します。また、すべての java.util.logging、Log4j、および Logback による Apache Commons Logging の使用。このルーティング動作により、Java エージェントが Logback の計測に加えて、これらの他のロギング ライブラリのいずれかを計測する場合、重複したログが New Relic に報告される可能性があります。
Dropwizard ログの使用時に重複したログが報告されるのを避けるために、Logback を除くすべてのログ フレームワーク インストルメンテーションを無効にすることをお勧めします。 これは、エージェント構成ファイルのclass_transformer
セクションで実行できます。
com.newrelic.instrumentation.logback-classic-1.2 :
com.newrelic.instrumentation.apache-log4j-1 :
com.newrelic.instrumentation.apache-log4j-2 :
com.newrelic.instrumentation.java.logging-jdk8 :
com.newrelic.instrumentation.jboss.logging :
重要 エージェントリリース7.7.0以降では、デフォルトでエージェント設定ファイルでこの機能が有効になっています。
サポートされているフレームワーク が検出されると、エージェントのログ転送によりデータの消費量が増加します。この量は、アプリケーションとそれが生成するログの量によって異なります。この機能は無効にすることができます。オプションの詳細については、 「自動ログを無効にする」 を参照してください。
すでにログ転送ソリューションを導入している場合は、この機能を無効にする必要があります。
Java エージェントにログを転送させるのではなく、独自のログ フォワーダーを使用したい場合は、トレース コンテキスト メタデータでログを装飾するための コンテキスト ソリューションの手動ログが 適切なソリューションになります。
オプション1(推奨):エージェントにログを転送させます。 これは最も単純なアプローチであり、ログフォワーダーの設定にアクセスしたり関心を持ったりしていない開発者や、アプリのコンテキストでログやその他のリンクメタデータの機能を確認したいアカウントに最適です。多くのオーバーヘッド。
このオプションを使用して、エージェントはspan.id
、 trace.id
、 hostname
、 entity.guid
、およびentity.name
を追加します。ログ転送の制限について学習します。
この機能はデフォルトで有効になっています。
必要なのは、ログ転送機能を備えたエージェント バージョン ( Java エージェント 7.6.0 以降 ) をインストールすることだけです。転送が無効になっている場合は、次の構成を使用できます。
構成ファイル ( newrelic.yml
)、共通セクションの下にスペース 2 つインデントされています。
max_samples_stored : 10000
環境変数:
NEW_RELIC_APPLICATION_LOGGING_ENABLED = true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED = true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED = 10000
NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED = false
システムプロパティ:
-Dnewrelic.config.application_logging.enabled = true
-Dnewrelic.config.application_logging.forwarding.enabled = true
-Dnewrelic.config.application_logging.forwarding.max_samples_stored = 10000
-Dnewrelic.config.application_logging.local_decorating.enabled = false
Optional adjustments (max_samples_stored
):
この機能を有効にすると、1分ごとにNewRelicに送信されるログ行の最大数も制御できます。デフォルト値は10,000です。エージェントが60秒のウィンドウで10,000を超えるログ行を確認すると、ログのサンプリングが開始されます。
より多くのログを受信するには、より大きな数値に設定します。受け取るログの数を減らすには、数値を小さく設定します。負でない整数はすべて有効です。
ヒント これは、 1分あたり に送信されるログの数を指します。max_samples_stored
を12未満の値に設定すると、ログが送信されないという効果があります。
構成ファイル( newrelic.yml
):
max_samples_stored : 10000
環境変数:
NEW_RELIC_APPLICATION_LOGGING_ENABLED = true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED = true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED = 10000
NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED = false
システムプロパティ:
-Dnewrelic.config.application_logging.enabled = true
-Dnewrelic.config.application_logging.forwarding.enabled = true
-Dnewrelic.config.application_logging.forwarding.max_samples_stored = 10000
-Dnewrelic.config.application_logging.local_decorating.enabled = false
重要 既存のログ転送ソリューションがあり、エージェントをコンテキストで自動ログを使用するように更新する場合は、disable your manual log forwarder にしてください。そうしないと、アプリは二重のログラインを送信します。アカウントによっては、二重請求になる場合があります。詳細については、手順に従い、特定のログフォワーダー を無効にしてください。
オプション2:独自のログフォワーダーを使用します。 あなたが好きなログフォワーダーをすでに持っていますか?私たちはあなたをカバーしています!Javaエージェントは、自動ログインコンテキスト機能へのアクセスを提供するために必要なリンクメタデータでログを装飾でき、手動ログフォワーダーを使用してそれらをNewRelicに送信できます。
重要 このオプションは、エージェント内転送では使用しないでください。エージェント内転送が有効になっているときに外部ログフォワーダー を使用してログをNewRelicに送信すると、ログがNewRelicに2回送信されます。アカウントによっては、二重請求が発生する場合があります。
エージェントの構成を更新してログ転送を無効にし、ローカルデコレーションを有効にしてから、エージェントを再起動してログのデコレーションを開始します。
構成ファイル ( newrelic.yml
)、共通セクションの下にスペース 2 つインデントされています。
環境変数:
NEW_RELIC_APPLICATION_LOGGING_ENABLED = true
NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED = true
NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED = false
システムプロパティ:
-Dnewrelic.config.application_logging.enabled = true
-Dnewrelic.config.application_logging.local_decorating.enabled = true
-Dnewrelic.config.application_logging.forwarding.enabled = false
デコレータは、アプリケーションログファイルのすべてのログメッセージに、 entity.guid
、 hostname
、 trace.id
、 span.id
、 entity.name
の5つの属性を追加します。例:
This is my log message. NR-LINKING|{entity.guid}|{hostname}|{trace.id}|{span.id}|{entity.name}|
ログメッセージが空または空白の場合、出力メッセージも空になります。 例:
NR-LINKING|{entity.guid}|{hostname}|{trace.id}|{span.id}|{entity.name}|.
出力されるログメッセージは空の文字列になります。
ログがトランザクションの外部で発生した場合、またはアプリケーションのコンテキストに適用できない場合、一部の属性は空になる可能性があります。
このドキュメントはインストールの役に立ちましたか? データを保護する ログには、HIPAAまたはその他のコンプライアンスプロトコルによって保護されている機密情報が含まれている場合があります。デフォルトでは、クレジットカードや社会保障番号などのアイテムのように見える番号パターンを難読化しますが、追加情報をハッシュまたはマスクする必要がある場合があります。
詳細については、難読化の式とルールに関する ドキュメントを参照してください。 New Relic UIを使用するか、GraphQL APIであるNerdGraphを使用して、ログデータをハッシュまたはマスクできます。
データを調べる ログデータを最大限に活用するには:
トラブルシューティングのヒント 通常、コンテキストでAPM ログを有効にしてから 1 分以内にログが表示され始めます。 アプリのTriage > Logs セクションを確認してください。 また、そこにエラーに関連するログパターンも 表示され始めます。
エラーまたはトレースのログが表示されない場合は、アプリにログがない可能性があります。 UIページを更新するか、選択した期間 を変更してみてください。
自動ロギングを無効にする APMログ イン コンテキストは APM エージェント ログ データを自動的に転送し、デフォルトで有効になっています。 これにより、セキュリティ、コンプライアンス、課金、システム パフォーマンスに悪影響が及ぶ可能性があります。 自動ログを無効にするには:
New Relic UI のユーザー メニュー から、 Manage your data > Log settings をクリックします。 アカウントの行の右側にある省略記号... メニューをクリックします。 確認ボタンをクリックして、自動ロギングを有効または無効にしてロックまたはロック解除するか(親アカウント)、有効または無効のみ(子アカウント)にします。 詳細について、またはデフォルト設定を調整する必要がある場合は、自動ログを無効にする 手順に従ってください。
コンテキストオプションの手動ログ 言語エージェントがログを転送および装飾できるようになる前は、手動ソリューションを使用してリンクメタデータを送信できました。
このオプションは引き続きサポートされていますが、おすすめしません。また、この方法では、コンテキストでログを有効にする前に、ログフォワーダーをインストールする必要があります。ログフォワーダーがない場合は、NewRelicUIでインフラストラクチャエージェント を使用するように求められます。
既存のログ転送ソリューションを使用し、後でエージェントを更新してコンテキスト内の自動ログを使用することにした場合は、必ずdisable your manual log forwarder を実行してください。 そうしないと、アプリは二重のログ行を送信することになります。 アカウントによっては、二重請求が発生する可能性があります。 詳細については、特定のログフォワーダー を無効にする手順に従ってください。
手動プロセスを使用してJavaのコンテキストでログを設定する必要がある場合は、次の手順に従います。
NewRelicでのロギングをすでに設定し ていることを確認してください。これには、アプリケーションログを収集し、NewRelicに転送されるメタデータを拡張するサポートされているログフォワーダーの構成が含まれます。最新のJavaエージェントバージョンをインストール または更新 します。コンテキスト内のログには、 Javaエージェントバージョン5.6.0以降 を使用してください。 JVM引数-javaagent
を有効にし、分散トレース を有効にします。必要に応じて次の拡張機能のいずれかを使用して、Javaのコンテキストでログを構成し、ログデータを強化します。SpringまたはSpringBootを使用していて、必要な拡張機能がわからない場合は、 Spring のドキュメントを参照してください。 Dropwizard1.3以降 Javaエージェントとのコンテキストでログ用のDropwizard 拡張機能を提供します。開始するには、GitHubのコード とサンプルアプリケーション を確認してください。
DropWizard拡張機能を使用してJavaアプリのコンテキストでログを構成するには:
Dropwizard 1.3以降 のパッケージがインストールされ、アプリケーションで動作していることを確認してください。インストールされ、アプリケーションで動作している元のDropwizardアペンダーとロギングファクトリを使用します。
アプリケーションにNewRelicJavaエージェントバージョン5.6.0以降がインストールされていること、およびJVM引数-javaagent
が有効になっていることを確認してください。
プロジェクトの依存関係を更新して、必要に応じてDropwizard1.3拡張機能を含めます。
Gradle: build.gradle
ファイルに以下を追加します。
implementation ( "com.newrelic.logging:dropwizard:2.0" )
Maven: pom.xml
ファイルに以下を追加します。
< groupId > com.newrelic.logging </ groupId >
< artifactId > dropwizard </ artifactId >
Dropwizard .yaml
構成ファイルをnewrelic-json
レイアウトで更新し、現在使用されているtype: console
またはtype: file
を必要に応じてtype: newrelic-console
またはtype: newrelic-file
に置き換えます。例えば:
New Relic Dropwizard拡張機能は、標準のDropwizardログを使用するlog-format
レイアウトタイプもサポートしています。テストの目的で、1行の変更でレイアウトのタイプを変更できます。
logFormat : "%date{ISO8601} %c %-5p: %m trace.id=%mdc{trace.id} span.id=%mdc{span.id}%n"
java.util.logging Javaエージェントとのコンテキストでログ用のjava.util.logging 拡張子を提供します。開始するには、GitHubのコード とサンプルアプリケーション を確認してください。
java.util.logging
拡張子の付いたJavaアプリのコンテキストでログを構成するには:
java.util.logging
パッケージがインストールされ、アプリケーションで動作していることを確認してください。
アプリケーションにNewRelicJavaエージェントバージョン5.6.0以降がインストールされていること、およびJVM引数-javaagent
が有効になっていることを確認してください。
プロジェクトの依存関係を更新して、必要に応じてjava.util.logging
拡張子を含めます。これらのファイルを編集できない場合は、代わりにjarをアプリケーションclasspath
に直接追加 できます。
Gradle: build.gradle
ファイルに以下を追加します。
implementation ( "com.newrelic.logging:jul:2.0" )
Maven: pom.xml
ファイルに以下を追加します。
< groupId > com.newrelic.logging </ groupId >
< artifactId > jul </ artifactId >
ログファイルのhandlers
プロパティがNewRelicMemoryHandler
以外に設定されているかどうかを確認してください。次のように、ルートロガーのハンドラーを一覧表示する行を探します。
handlers = java.util.logging.FileHandler
ロギングプロパティファイルを更新して、ルートロガーのハンドラーをNewRelicMemoryHandler
に設定し、別のハンドラー宛てのメッセージをインターセプトします。
handlers = com.newrelic.logging.jul.NewRelicMemoryHandler
以前にルートロガーに割り当てられたハンドラーにターゲットを設定してNewRelicMemoryHandler
を構成します。これにより、ログメッセージの送信元のスレッドでNewRelicが必要とするデータがキャプチャされます。
com.newrelic.logging.jul.NewRelicMemoryHandler.target = java.util.logging.FileHandler
最終ハンドラーにはNewRelicFormatter
を使用します。次の例のように、ログプロパティファイルを更新してformatter
プロパティを設定します。フォーマッタを設定するハンドラが前の手順のtarget
ハンドラ(この例ではjava.util.logging.FileHandler
)であることを確認してください。
java.util.logging.FileHandler.formatter = com.newrelic.logging.jul. NewRelicFormatter
New Relicのログ形式は、トランザクションとログを相互に関連付けるために使用するテレメトリメタデータを使用したJSONです。現在、その形式のカスタマイズはサポートされていません。
完了すると、テキストの代わりにJSONがログに記録されます。JSONは、1行に1つずつ、単一のオブジェクトとしてフォーマットする必要があり、 log.level
やthread.name
などのフィールドを含める必要があります。コンテキスト内のログに必要なtrace.id
は、トランザクション内で発生するログメッセージの値のみを持つ必要があります。
java.util.loggingクラスパスの追加 ログインコンテキスト拡張機能を取得する最も直接的な方法は、これらの依存関係をMavenのpom.xml
またはGradleのbuild.gradle
に追加することです。これにより、パッケージツールは正しい依存関係を取得できます。
これらのファイルを編集できない場合は、代わりに、ロギングフレームワークの構成用のアプリケーションclasspath
にjarを直接追加できます。
クラスパスを変更する前に:
アプリのJavaエージェントでJVM引数-javaagent
を有効にします。 アプリケーションが使用しているロギングフレームワークを確認します。 ロギングフレームワークの構成を変更できることを確認してください。 次の3つのjarがまだ存在しない場合は、クラスパスに追加します。通常、MavenCentralで公開されている最新バージョンを使用することをお勧めします。 Log4j 1.x Javaエージェントに関連する手動ログ用のLog4j1.x 拡張機能を提供します。開始するには、GitHubのコード とサンプルアプリケーション を確認してください。
Log4j 1.x拡張機能を使用してJavaアプリのコンテキストで手動ログを構成するには、コードまたはXMLを介してLog4j拡張機能を構成する必要があります。AsyncAppender
インスタンスはXMLを介してのみ自動的に構成できるため、プロパティファイルはサポートされていません。
Log4j 1.x パッケージがインストールされ、アプリケーションで動作していることを確認してください。
アプリケーションにNewRelicJavaエージェントバージョン5.6.0以降がインストールされていること、およびJVM引数-javaagent
が有効になっていることを確認してください。
プロジェクトの依存関係を更新して、必要に応じてLog4j1.x拡張機能を含めます。
Gradle: build.gradle
ファイルに以下を追加します。
implementation ( "com.newrelic.logging:log4j1:2.0" )
Maven: pom.xml
ファイルに以下を追加します。
< groupId > com.newrelic.logging </ groupId >
< artifactId > log4j1 </ artifactId >
ロギング構成XMLファイルで、 <appender>
要素をNewRelicLayout
で更新し、 <layout class="com.newrelic.logging.log4j1.NewRelicLayout"/>
を追加します。
< appender name = " TypicalFile " class = " org.apache.log4j.FileAppender " >
< param name = " file " value = " logs/log4j1-app.log " />
< param name = " append " value = " false " />
< layout class = " com.newrelic.logging.log4j1.NewRelicLayout " />
NewRelicAsyncAppender
を使用して、NewRelicのログフォワーダーを対象とするすべてのアペンダーをラップします。例えば:
< appender name = " NewRelicFile "
class = " com.newrelic.logging.log4j1.NewRelicAsyncAppender " >
< appender-ref ref = " TypicalFile " />
ルートロガーで非同期アペンダーを使用します。例えば:
< appender-ref ref = " NewRelicFile " />
Example configuration file for the Log4j 1.x extension:
<?xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
< log4j: configuration debug = " false " >
< appender name = " TypicalFile " class = " org.apache.log4j.FileAppender " >
< param name = " file " value = " logs/log4j1-app.log " />
< param name = " append " value = " false " />
< layout class = " com.newrelic.logging.log4j1.NewRelicLayout " />
< appender name = " NewRelicFile "
class = " com.newrelic.logging.log4j1.NewRelicAsyncAppender " >
< appender-ref ref = " TypicalFile " />
< appender name = " TypicalConsole " class = " org.apache.log4j.ConsoleAppender " >
< layout class = " org.apache.log4j.PatternLayout " >
< param name = " ConversionPattern " value = " %-5p %c{1} - %m%n " />
< appender-ref ref = " NewRelicFile " />
< appender-ref ref = " TypicalConsole " />
Log4j 2.x Java エージェントのコンテキストで、ログ用のLog4j 2.x 拡張機能を提供します。 開始するには、GitHub のコード とサンプルアプリケーションを 確認してください。
Log4j 2.x拡張機能を使用してJavaアプリのコンテキストでログを構成するには、次のようにします。
Log4j2.13.2以降 またはLogs4j2バインディング パッケージがインストールされ、アプリケーションで動作していることを確認してください。
アプリケーションにNewRelicJavaエージェントバージョン5.6.0以降がインストールされていること、およびJVM引数-javaagent
が有効になっていることを確認してください。
プロジェクトの依存関係を更新して、必要に応じてLog4j2.x拡張機能を含めます。
Gradle: 強調表示されたセクションをbuild.gradle
ファイルに追加します。
implementation ( "com.newrelic.logging:log4j2:2.0" )
Maven: 強調表示されたセクションをpom.xml
ファイルに追加します。
< groupId > com.newrelic.logging </ groupId >
< artifactId > log4j2 </ artifactId >
ロギング構成XMLファイルで、強調表示されたセクションを追加して<configuration>
要素を更新します。
< Configuration xmlns = " http://logging.apache.org/log4j/2.0/config "
packages = " com.newrelic.logging.log4j2 "
プロパティファイルを使用している場合は、 packages=com.newrelic.logging.log4j2
を追加します。
<NewRelicLayout/>
を追加して、いずれかのアペンダー内でNewRelicLayout
要素を使用します。例えば:
< File name = " MyFile " fileName = " logs/app-log-file.log " >
プロパティファイルを使用している場合は、 layout.type
のみを変更してください。
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = NewRelicLayout
既存のアペンダーのみを変更した場合は、この手順をスキップしてください。新しいアペンダーを追加した場合は、 <Root>
内に<AppenderRef/>
を追加して、このアペンダーを使用します。ref
属性を使用して、前の手順で作成したアペンダーname
を参照します。例えば:
< AppenderRef ref = " MyFile " />
プロパティファイルを使用していて、新しいアペンダーを追加した場合は、次を追加します。
rootLogger.appenderRef.stdout.ref = STDOUT
ログバックバージョン1.2.0以降 Javaエージェントに関連するログのログバック 拡張機能を提供します。開始するには、GitHubのコード とサンプルアプリケーション を確認してください。
Logbackを使用してJavaアプリのコンテキストでログを構成するには:
Logbackバージョン1.2.0以降 とNewRelicJavaエージェントバージョン5.6.0以降がインストールされ、アプリケーションで動作していることを確認してください。
アプリケーションにNewRelicJavaエージェントバージョン5.6.0以降がインストールされていること、およびJVM引数-javaagent
が有効になっていることを確認してください。
プロジェクトの依存関係を更新して、必要に応じてLogback拡張機能を含めます。
Gradle: 強調表示されたセクションをbuild.gradle
ファイルに追加します。
implementation ( "com.newrelic.logging:logback:2.0" )
Maven: 強調表示されたセクションをpom.xml
ファイルに追加します。
< groupId > com.newrelic.logging </ groupId >
< artifactId > logback </ artifactId >
ロギング構成xml
を更新して、既存の<encoder>
要素を置き換えます。
コンソール( stdout/stderr
)にログを記録している場合は、 ConsoleAppender
を探して置き換えます。
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="com.newrelic.logging.logback.NewRelicEncoder"/>
ファイルにログを記録している場合は、 FileAppender
を探して <encoder>
を置き換えます。
< appender name = " LOG_FILE " class = " ch.qos.logback.core.FileAppender " >
< file > logs/app-log-file.log </ file >
< encoder class = " com.newrelic.logging.logback.NewRelicEncoder " />
ロギング設定xml
をNewRelicAsyncAppender
で更新します。NewRelicAsyncAppender
がNewRelicのログフォワーダーをターゲットとするすべてのアペンダーを確実にラップするようにするには、次のセクションを追加します。"LOG_FILE"
を、前の手順で更新したアペンダーの名前に変更します。
< appender name = " ASYNC " class = " com.newrelic.logging.logback.NewRelicAsyncAppender " >
< appender-ref ref = " LOG_FILE " />
NewRelicAsyncAppender
ロガーで使用される最初のアペンダーであることを確認してください。 ルート ロガーのアペンダーを、前の手順で作成したASYNC
アペンダーに置き換えます。 次に、 <root>
リストのNewRelicAsyncAppender
の後に他のアペンダーをリストします。
< appender-ref ref = " ASYNC " />
Logback拡張機能の更新されたログ.xml
ファイルの例を次に示します。GitHubでも実際の例を 見ることができます。
Single console appender example
ロギング拡張情報を追加した後の構成ファイルの例:
< appender name = " STDOUT " class = " ch.qos.logback.core.ConsoleAppender " >
< encoder class = " com.newrelic.logging.logback.NewRelicEncoder " />
< appender name = " ASYNC " class = " com.newrelic.logging.logback.NewRelicAsyncAppender " >
< appender-ref ref = " STDOUT " />
< appender-ref ref = " ASYNC " />
Two console appenders example
この例では、New Relicのログをファイルに送信しますが、標準のログをコンソールに送信します。
< appender name = " FILE " class = " ch.qos.logback.core.FileAppender " >
< encoder class = " com.newrelic.logging.logback.NewRelicEncoder " />
< appender name = " STDOUT " class = " ch.qos.logback.core.ConsoleAppender " >
< pattern > %msg%n </ pattern >
< appender name = " ASYNC " class = " com.newrelic.logging.logback.NewRelicAsyncAppender " >
< appender-ref ref = " FILE " />
< appender-ref ref = " ASYNC " />
< appender-ref ref = " STDOUT " />
SpringとSpringboot Spring およびSpringBoot の現在のバージョンの拡張機能を提供しています。ロギングライブラリをすでに知っている場合は、そのドキュメントに直接スキップできます。