New Relic for Goロギングは、標準のGoログパッケージとNewRelic Loggerパッケージを使用します。ロギングは、NewRelic統合のトラブルシューティングに役立ちます。たとえば、インストールや構成の問題があります。
ログファイルの書き込み
Go エージェントのメソッドを使用してログ ファイルと監査ファイルを書き込むには、 エージェントの GitHub リポジトリの log.go を参照してください。
Logrus 統合
New Relic 、さまざまなユースケースに対応する 2 つの Logrus 統合を提供します。
エージェントのログ記録 (Go エージェントのデバッグ メッセージ用)
この統合を使用して、Go エージェントの内部ログメッセージを Logrus に送信します。 これはエージェント自体のトラブルシューティングに役立ちます。
統合: nrlogrus
以下は、エージェント ロギングにNew Relic Logrus インテグレーションを使用する例です。
必要なパッケージをインポートします。
import ("os""github.com/newrelic/go-agent/v3/integrations/nrlogrus""github.com/newrelic/go-agent/v3/newrelic""github.com/sirupsen/logrus")エージェント ログに Logrus を使用するように Go エージェントを構成します。
app, err := newrelic.NewApplication(newrelic.ConfigAppName("Your Application Name"),newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE_KEY")),func(config *newrelic.Config) {logrus.SetLevel(logrus.DebugLevel)config.Logger = nrlogrus.StandardLogger()},)
アプリケーションログ (コンテキスト内のログ)
この統合を使用して、自動トレース相関を使用してアプリケーションの Logrus ログメッセージをNew Relicに送信します。 これにより、コンテキスト内でのログが有効になり、アプリのUIでエラーやトレースに関連するログメッセージを直接確認できるようになります。
以下は、アプリケーションのロギングにNew Relic Logrus インテグレーションを使用する例です。
必要なパッケージをインポートします。
import ("context""os""github.com/newrelic/go-agent/v3/integrations/logcontext-v2/nrlogrus""github.com/newrelic/go-agent/v3/newrelic""github.com/sirupsen/logrus")New Relic Formatter を使用するように Logrus を設定します。
app, err := newrelic.NewApplication(newrelic.ConfigAppName("Your Application Name"),newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE_KEY")),newrelic.ConfigAppLogForwardingEnabled(true),)logger := logrus.New()logger.SetFormatter(nrlogrus.NewFormatter(app, &logrus.TextFormatter{}))トランザクション コンテキストを使用してアプリケーションでロガーを使用します。
txn := app.StartTransaction("myTransaction")defer txn.End()ctx := newrelic.NewContext(context.Background(), txn)logger.WithContext(ctx).Info("This log will be correlated with the transaction")
その他の例については、 logcontext-v2/nrlogrus の例を参照してください。
その他サポートされているロギング統合
Logrus に加えて、 New Relic他のいくつかの人気のある Go ロギング ライブラリの統合を提供します。
エージェントロギング統合
これらの統合により、Go エージェントの内部デバッグ メッセージがロギング フレームワークに送信されます。
- nrzap - Uber の Zap ロガーとの統合
- nrslog - Go の標準ライブラリ
log/slogパッケージとの統合 - nrzerolog - Zerolog との統合
- nrlogxi - Logxi との統合
コンテキスト内のログの統合
これらの統合により、アプリケーション ログのコンテキスト内のログが有効になります。
- logcontext-v2/zerologWriter - トレース相関を使用して Zerolog ログメッセージを New Relic に送信します
- logcontext-v2/logWriter - 標準ライブラリ
logパッケージのメッセージをトレース相関とともに New Relic に送信します。
各統合は、上記の Logrus の例と同様のパターンに従います。 詳細な使用手順と例については、それぞれの GitHub リポジトリを参照してください。
APMおよびインフラストラクチャデータのログを表示
コンテキスト内でログを使用すると、アプリのUIでエラーやトレースに関連するログメッセージを直接確認できます。 Kubernetesクラスタなどのインフラストラクチャ データのコンテキストでログを確認することもできます。 別の UI ページに切り替える必要はありません。
コンテキスト内のログを有効にするには、上記のログ イン コンテキスト統合のいずれかを使用します。 特に Logrus については、 logcontext-v2/nrlogrus統合をご覧ください。