.NET エージェントを使用すると、 logs in contextを取得でき、他の New Relic データのコンテキストでアプリのログを表示できます。 この機能の一般的な情報については、 「APM ログのコンテキスト」を参照してください。
ヒント
.Net ログがたくさんありますか? それらを最適化および管理する方法については、チュートリアルをご覧ください。
コンテキストオプションの自動ログ
アプリのログとリンク メタデータを自動的に New Relic に送信するようにコンテキスト内のログを構成するには、3 つのオプションがあります。 エージェント転送で使用するコンテキスト内の自動ログにサポートされているフレームワークは次のとおりです。
フレームワーク | フレームワークの最小バージョン | エージェントの最小バージョン |
---|---|---|
Log4Net | .NET Frameworkの場合:v1.2.10 .NET Coreの場合:v2.0.10 | v9.7.0 |
セリロッグ | .NET Frameworkの場合:v2.0.0 .NET Coreの場合: v2.5.0 | v9.7.0 |
NLog | .NET Frameworkの場合:v4.1.0 .NET Coreの場合:v4.5.0 | v9.7.0 |
Microsoft.Extensions.Logging | v3.0.0 | .NET Framework の場合: エージェント v9.7.0 .NET Core の場合: エージェント v10.0.0 |
ヒント
Sitecore の多くのバージョンでは Sitecore.Logging を使用します。これは log4net のフォークに基づいていますが、独立しています。このライブラリのサポートは、.NET Agent のバージョン 10.14.0 で追加されました。
これは最も単純なアプローチであり、ログフォワーダーの設定にアクセスしたり関心を持ったりしていない開発者や、アプリのコンテキストでログやその他のリンクメタデータの機能を確認したいアカウントに最適です。多くのオーバーヘッド。
このオプションを使用すると、ログにはspan.id
、 trace.id
、 hostname
、 entity.guid
、およびentity.name
が含まれます。ログ転送の制限について学習します。
必要なのは、ログ転送機能を備えたエージェント バージョン ( .NET エージェント 9.7.0 以降) をインストールすることだけです。 転送が無効になっている場合は、エージェント設定ファイルに次の内容を追加することで有効にできます。
<applicationLogging enabled="true"> <forwarding enabled="true" maxSamplesStored="10000" /> <localDecorating enabled="false" /></applicationLogging>
環境変数:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=false
重要
環境変数の値が存在する場合は、構成ファイルの値よりも優先されます。
エージェントバージョン9.8.0以降、この機能はデフォルトで有効になっています。
エージェント バージョン 10.4.0 以降、エージェントは、ログ イベントからのコンテキスト データ (カスタム属性) のキャプチャと転送もサポートします。このサブ機能はデフォルトで無効になっています。有効にするには、次の構成を使用します。
<applicationLogging enabled="true"> <forwarding enabled="true" maxSamplesStored="10000"> <contextData enabled="true" include="" exclude="" /> </forwarding> <localDecorating enabled="false" /></applicationLogging>
環境変数:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=false
New Relic は、「context」で始まるコンテキスト データを使用します。たとえば、New Relic の値myValue
を持つmyKey
という名前のカスタム ログ属性はcontext.myKey : myValue
です。
通常、インストルメント化された .NET ロギング ライブラリは、各ログ イベントのコンテキスト データのキーと値のペアをDictionary<string,object>
として保存します。New Relic に送信する前に値を文字列に変換するには、まずNewtonsoft.Json.JsonConvert.SerializeObject
の使用を試みます。それが失敗した場合、オブジェクトで.ToString()
の呼び出しを試みます。最後の手段として、タイプ名を送信します。
include
および exclude
構成オプションを使用してコンテキスト データをフィルタリングできます。これらは、属性名のカンマ区切りのリストです。どちらのデフォルト値も空の文字列です。空の include
フィールドは「すべてを含める」ことを意味します。これらの包含/除外オプションは、他の エージェント属性構成オプションと同じルールに従います。
たとえば、「a」で始まる「apple」を除くすべての属性を含め、「b」で始まる「banana」を除くすべての属性を除外するには、次の構成を使用します。
<applicationLogging enabled="true"> <forwarding enabled="true" maxSamplesStored="10000"> <contextData enabled="true" include="a*, banana" exclude="b*, apple" /> </forwarding> <localDecorating enabled="false" /></applicationLogging>
環境変数:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_INCLUDE="a*, banana"NEW_RELIC_APPLICATION_LOGGING_FORWARDING_CONTEXT_DATA_EXCLUDE="b*, apple"NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=false
Optional adjustments:
ログ転送を有効にすると、1分ごとにNewRelicに送信されるログの最大数も制御できます。デフォルト値は10,000です。60秒のウィンドウで10,000を超えるログが受信されると、ログのサンプリングが開始されます。
より多くのログを受信するには、より大きな数値に設定します。受け取るログの数を減らすには、数値を小さく設定します。任意の整数が有効です。
<applicationLogging enabled="true"> <forwarding enabled="true" maxSamplesStored="10000" /> <localDecorating enabled="false" /></applicationLogging>
環境変数:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED=10000NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=false
重要
環境変数の値が存在する場合は、構成ファイルの値よりも優先されます。
既存のログ転送ソリューションがあり、エージェントをコンテキストで自動ログを使用するように更新する場合は、disable your manual log forwarderにしてください。そうしないと、アプリは二重のログラインを送信します。アカウントによっては、二重請求になる場合があります。詳細については、手順に従い、特定のログフォワーダーを無効にしてください。
あなたが好きなログフォワーダーをすでに持っていますか?私たちはあなたをカバーしています!言語エージェントは、自動ログインコンテキスト機能へのアクセスを提供するために必要なリンクメタデータでログを装飾できます。
このオプションは、エージェント内転送では使用しないでください。エージェント内転送が有効になっているときに外部ログフォワーダーを使用してログをNewRelicに送信すると、ログがNewRelicに2回送信されます。アカウントによっては、二重請求が発生する場合があります。
重要
.NET エージェントのローカル ログ装飾は、ログ メッセージを直接変更しません。メッセージ内にNR-LINKING
トークンを書き出すには、ロギング フレームワークの構成を更新する必要があります。log4net および Serilog での JSON 出力の場合、追加の構成またはコードが必要になります。
このオプションを使用する場合は、エージェント内転送構成オプションが無効になっていることを確認してください。
構成でログの装飾を有効にしてから、エージェントを再起動してログの装飾を開始します。
<applicationLogging enabled="true"><forwarding enabled="false" /><localDecorating enabled="true" /></applicationLogging>環境変数:
NEW_RELIC_APPLICATION_LOGGING_ENABLED=trueNEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED=falseNEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=true重要
環境変数の値が存在する場合は、構成ファイルの値よりも優先されます。
デコレータは、すべてのログ
message
(プレーン テキスト) に 5 つの属性を追加します:entity.guid
、entity.name
、hostname
、trace.id
、およびspan.id
。例:This is my log message. NR-LINKING|{entity.guid}|{hostname}|{trace.id}|{span.id}|{entity.name}重要
JSON の場合、
NR-LINKING
データはmessage
プロパティに存在する必要があります。ログメッセージが空または空白の場合、出力メッセージも空になります。 例:
NR-LINKING|{entity.guid}|{hostname}|{trace.id}|{span.id}|{entity.name}|.出力されるログメッセージは空の文字列になります。
ログがトランザクションの外部で発生した場合、またはアプリケーションのコンテキストに適用できない場合、一部の属性は空になる可能性があります。装飾フォーマッターを使用するには、手動プロセスよりもこのオプションをお勧めします。
重要
キー名にハイフンを使用できないロギング フレームワークをサポートするため、ロギング フレームワークから
NR-LINKING
トークンを読み出すために使用されるキーは、NR_LINKING
ではなくNR-LINKING
です。log4net構成
log4net の場合、.NET エージェントは、
NR-LINKING
トークンをログ イベント オブジェクトのNR_LINKING
というプロパティとして保存します。次の一般的なレイアウトの例は、NR-LINKING
トークンを書き出すように log4net を構成する方法を示しています。他のレイアウトもサポートされていますが、以下にリストされていません。SimpleLayout は変更できないためサポートされていません。PatternLayout
/DynamicPatternLayout
:conversionPattern
を更新して、行末にNR_LINKING
プロパティを含めます。<layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message %property{NR_LINKING}%newline %exception" /></layout>log4net.Ext.Json
: レイアウトを更新して、メッセージ JSON プロパティにNR_LINKING
というメンバーを含めます。log4net.Appender.AdoNetAppender
: このアペンダーは他のレイアウトとは少し異なる設定になっています。 メタデータを含めるには、message
を更新する必要があります。 次の例では、PatternLayout
を使用してこれを示しています。<parameter><parameterName value="@message" /><dbType value="String" /><size value="4000" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%message %property{NR_LINKING}" /></layout></parameter>セリログ構成
Serilog の場合、.NET エージェントは、
NR-LINKING
トークンをログ イベント オブジェクトのNR_LINKING
というプロパティとして保存します。次の一般的なフォーマッタとシンクの例は、NR-LINKING
トークンを書き出すように Serilog を構成する方法を示しています。他のシンクとフォーマッタもサポートされていますが、以下にリストされていません。Plain text using an
outputTemplate
:outputTemplate
を更新して、行末にNR_LINKING
プロパティを含めます。Log.Logger = new LoggerConfiguration().MinimumLevel.Override("Microsoft", LogEventLevel.Information).Enrich.FromLogContext().WriteTo.File(path: @"plaintext_log.txt",fileSizeLimitBytes: 1_000_000,rollOnFileSizeLimit: true,shared: true,flushToDiskInterval: TimeSpan.FromSeconds(1),outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj} {NR_LINKING} {NewLine}{Exception}").CreateLogger();JSON Formatter with automatic property output: デフォルトの JsonFormatter は、
NR_LINKING
メタデータをメッセージ プロパティに書き込まず、代わりに各プロパティを独自の JSON オブジェクトに書き込みます。 コンテキスト内のログが機能する前に、NR_LINKING
データをmessage
プロパティの末尾に書き込むカスタム JSON フォーマッタを作成する必要があります。Microsoft.Extensions.Logging構成
Microsoft.Extensions.Logging の場合、.NET エージェントは、メッセージを含む
NR-LINKING
トークンを新しく作成されたスコープに保存します。Microsoft.Extensions.Logging は出力のために他のフレームワークに依存しているため、詳細については上記の log4net または Serilog 構成を参照してください。NLog構成
NLog の場合、.NET エージェントは、メッセージの末尾に直接
NR-LINKING
トークンを自動的に追加できるため、追加の構成は必要ありません。
言語エージェントがログを転送および装飾できるようになる前は、アプリケーションを更新してリンクメタデータを送信することにより、コンテキスト内でログを有効にすることができました。
このオプションは引き続きサポートされていますが、おすすめしません。このアプローチを使用する手順については、コンテキストオプションの手動ログを参照してください。
また、この方法では、コンテキストでログを有効にする前に、ログフォワーダーをインストールする必要があります。ログフォワーダーがない場合は、NewRelicUIでインフラストラクチャエージェントを使用するように求められます。
既存のログ転送ソリューションを使用し、後でエージェントを更新してコンテキスト内の自動ログを使用することにした場合は、必ずdisable your manual log forwarderを実行してください。 そうしないと、アプリは二重のログ行を送信することになります。 アカウントによっては、二重請求が発生する可能性があります。 詳細については、特定のログフォワーダーを無効にする手順に従ってください。
このドキュメントはインストールの役に立ちましたか?
データを保護する
ログには、HIPAAまたはその他のコンプライアンスプロトコルによって保護されている機密情報が含まれている場合があります。デフォルトでは、クレジットカードや社会保障番号などのアイテムのように見える番号パターンを難読化しますが、追加情報をハッシュまたはマスクする必要がある場合があります。
詳細については、難読化の式とルールを参照してください。New Relic UI を使用するか、当社の GraphQL API である NerdGraph を使用して、ログ データをハッシュまたはマスクできます。
データを調べる
ログデータを最大限に活用するには:
- APM Summaryページで、 Web transaction timeチャートをクリックして、特定の時点に関連付けられたログを表示します。
- アプリのErrors inboxをチェックして、エラーに関連するログを表示します。
- 分散トレースを使用して、個々のトレースに関連付けられているログを確認します。
- ログ UIを使用して、プラットフォーム全体でさらに多くのログ データを探索します。
- ログ出力と重大度に基づいてアラートを設定します。
- ログデータ専用のUIを使用してデータをクエリし、結果を含むダッシュボードを作成します。
トラブルシューティングのヒント
通常、コンテキスト内で APM ログを有効にしてから 1 分以内にログが表示され始めます。 アプリのTriage > Logsセクションを確認してください。 また、そこにエラーに関連するログパターンも表示され始めます。
エラーまたはトレースのログが表示されない場合は、アプリにログがない可能性があります。 UIページを更新するか、選択した期間を変更してみてください。
自動ロギングを無効にする
APMログ イン コンテキストは エージェント ログ データを自動的に転送し、デフォルトで有効になっています。 これにより、セキュリティ、コンプライアンス、課金、システム パフォーマンスに悪影響が及ぶ可能性があります。 詳細情報、またはデフォルト設定を調整する必要がある場合は、自動ログ記録を無効にする手順に従ってください。
コンテキストオプションの手動ログ
手動プロセスを使用して.NETのコンテキストでログを設定する必要がある場合は、次の手順に従います。
- NewRelicでのロギングをすでに設定していることを確認してください。これには、アプリケーションログを収集し、NewRelicに転送されるメタデータを拡張するサポートされているログフォワーダーの構成が含まれます。
- 最新の .NET エージェント バージョンをインストールまたは更新し、分散トレースを有効にします。コンテキスト内のログには、 .NET エージェント バージョン 8.21 以降とNew Relic .NET エージェント API バージョン 8.21 以降を使用します。
- Microsoft .NET Framework 4.5 以上 または .NET Core 2.0 以上 へのインストールまたはアップデートを行ってください。
- 以下のようなロギングエクステンションをインストールして設定することで、ログデータを充実させることができます。
- NewRelicUIでログデータを確認します。
log4netエクステンションの設定
Apache log4net version 2.0.8 or higher エクステンションを使って、ログデータをNew Relicプラットフォームの他の部分の関連データとリンクさせることができます。
次の図は、New Relic log4net エクステンションの特定のコンポーネントを強調して、Apache log4net を介したログメッセージの流れを示しています。多くのログフォワーダーが利用できます。この例では、 Fluentd を使用しています。
Appender: NewRelicAppender
は、.NET エージェント ( APIを使用) からのコンテキスト情報を、アプリケーションによって生成されたログイベントに追加します。 このコンテキスト情報はリンク メタデータと呼ばれ、 New Relicによって、ログメッセージをその作成元であるトランザクションおよびスパンにリンクするために使用されます。 このアペンダーは、強化されたログイベントを下流のアペンダーに渡して、さらに処理します。
NewRelicAppender
はForwardingAppender
タイプであるため、チェーンの最初のアペンダーである必要があります。また、動作するために、その子として実際の出力先に書き込むことができる別のアペンダーが必要です。
Layout: NewRelicLayout
は、強化されたログイベントをNew Relicが想定する JSON 形式にフォーマットします。 このレイアウトが割り当てられているアペンダーは、log4net に対して、ログフォワーダーが期待する場所にあるファイルに JSON を出力するように指示します。
Log Forwarder: ログフォワーダーは出力フォルダーを監視し、適切にフォーマットされ強化されたログ情報をNew Relicログ エージェントに段階的に送信します。
Log4netは、 appender
とlayout
を使用してログメッセージを保存およびフォーマットします。 NewRelicAppender
アプリケーションに接続されている場合、NewRelic.NETエージェントからのコンテキスト情報でログメッセージを強化します。アペンダーは、ログメッセージの特定のユースケースを処理するために、強化されたログメッセージをダウンストリームアペンダーに渡します。
log4netでのロギングの詳細については、Apache log4net Getting started のドキュメントを参照してください。
log4netエクステンションのコンテキストでログを設定するには、次のようにします。
Visual Studio NuGetパッケージマネージャーを使用して、
NewRelic.LogEnrichers.Log4Net
パッケージを見つけてインストールします。log4net構成ファイルで、ログ構成を更新して
NewRelicAppender
を第1レベルのアペンダーとして使用し、既存のアペンダーをその子として参照します。また、ログメッセージを出力先に書き込むアペンダーのレイアウトをNewRelicLayout
に置き換えます。次のlog4net構成例は、NewRelicリンクメタデータでログイベントを強化します。既存のログファイルに加えて、ログフォワーダーが使用できるように、
C:\logs\log4netExample.log.json
の特定のJSON形式で新しいログファイルを出力します。<log4net><root><level value="ALL" /><appender-ref ref="NewRelicAppender" /></root><appender name="NewRelicAppender" type="NewRelic.LogEnrichers.Log4Net.NewRelicAppender, NewRelic.LogEnrichers.Log4Net" ><threshold value="ALL"/><appender-ref ref="FileAppender" /></appender><appender name="FileAppender" type="log4net.Appender.FileAppender"><file value="C:\logs\log4netExample.log.json" /><param name="AppendToFile" value="true" /><layout type="NewRelic.LogEnrichers.Log4Net.NewRelicLayout, NewRelic.LogEnrichers.Log4Net"></layout></appender></log4net>log4net 拡張機能を設定し、ログ ファイルを更新した後、New Relic にデータを送信するように拡張機能を設定できます。ログを転送するにはいくつかのオプションがあります。以下は、コンテキストでログのインフラストラクチャ エージェントを使用した構成例です。
logs:- name: application-logfile: C:\logs\log4netExample.log.json # Path to a single log file
NLog拡張機能の設定
当社の NLog 4.5 以上 エクステンションを使用すると、ログデータを New Relic プラットフォームの他の部分の関連データとリンクさせることができます。
New Relic NLog拡張機能は、NewRelicロギングエンドポイントで必要とされる方法でログイベントをフォーマットするNewRelicJsonLayout
を提供します。次に、アプリケーションに接続すると、.NETエージェントからのコンテキスト情報が追加されます。次に、ログデータを出力フォルダーに書き込むようにターゲットを構成できます。ログフォワーダーはこのフォルダーを監視し、ログ情報をNewRelicに段階的に送信できます。
次の図は、New Relic NLog エクステンションの特定のコンポーネントを強調して、NLog を介したログメッセージの流れを示しています。
New Relic JSON Layout: NewRelicJsonLayout
は、.NET エージェント ( APIを使用) からのコンテキスト情報を、アプリケーションによって生成されたログイベントに追加し、 New Relicで想定される JSON 形式でログメッセージを出力します。 このコンテキスト情報はリンク メタデータと呼ばれ、 New Relicによって、ログメッセージを、それが作成されたトランザクションおよびスパンにリンクするために使用されます。
NewRelicAppender
はForwardingAppender
タイプであるため、チェーンの最初のアペンダーである必要があります。また、動作するために、その子として実際の出力先に書き込むことができる別のアペンダーが必要です。
File Target: FileTarget
は、ログメッセージが書き込まれるディスク上のファイルを定義します。 そのターゲットにNewRelicJsonLayout
を追加すると、出力が New Relic に転送できるように正しくフォーマットされます。
Log Forwarder: ログフォワーダーは、適切にフォーマットされ強化されたログデータを FileTarget
出力からNew Relicログ エージェントに送信するように構成されています。
NLogでのロギングの詳細については、 nlog-project.org documentation を参照してください。
NLog 4.5 以上の エクステンションを使用して、ログデータを New Relic プラットフォームの他の部分の関連データとリンクさせます。
Visual Studio NuGetパッケージマネージャーを使用して、
NewRelic.LogEnrichers.NLog
パッケージを見つけてインストールします。アプリケーション コードで、ログ設定を更新して
NewRelicJsonLayout
を追加し、MappedDiagnosticsContext ( MDC ) データを収集するか、MappedDiagnosticsLogicalContext ( MDLC ) データを収集するかを決定します。以下の設定例では、新しいJSONファイルがディスクに書き込まれます。 これらの設定オプション の中には、使用するディスク容量やターゲットのパフォーマンスを管理するのに役立つものもあります。
archiveAboveSize
maxArchiveFiles
bufferSize
enableArchiveFileCompression
autoFlush
concurrentWrites
NLog AsyncWrapper Target は必須ではありませんが、ログファイルのフォーマットや出力を別のスレッドで行うことで、パフォーマンスの向上に役立つ場合があります。
Don't collect MDC or the MDLC data (default):
次のコード例は、New Relicリンクメタデータでログイベントを強化しますが、MDCまたはMDLCデータでは強化しません。既存のログファイルに加えて、ログフォワーダーが使用できるように、
C:\logs\NLogExample.log.json
の特定のJSON形式で新しいログファイルを出力します。var loggerConfig = new LoggingConfiguration();var newRelicFileTarget = new FileTarget("NewRelicFileTarget");newRelicFileTarget.Layout = new NewRelicJsonLayout();newRelicFileTarget.FileName = "C:\logs\NLogExample.json";loggerConfig.AddTarget(newRelicFileTarget);loggerConfig.AddRuleForAllLevels("NewRelicFileTarget");LogManager.Configuration = loggerConfig;var logger = LogManager.GetLogger("Example");Collect MDC or the MDLC data:
アプリケーションがMDCまたはMDLCを使用している場合は、それらのコレクションにアイテムを含めるように
NewRelicJsonLayout
を構成できます。次のコード例は、MDCおよびMDLCデータの収集を可能にする追加の構成を追加します。前の例と同様に、ログフォワーダーが使用できるように、C:\logs\NLogExample.log.json
に特定のJSON形式で新しいログファイルを出力します。var loggerConfig = new LoggingConfiguration();var newRelicFileTarget = new FileTarget("NewRelicFileTarget");var newRelicLayout = new NewRelicJsonLayout{IncludeScopeProperties = true};newRelicFileTarget.Layout = newRelicLayout;newRelicFileTarget.FileName = @"C:\logs\NLogExample.json";loggerConfig.AddTarget(newRelicFileTarget);loggerConfig.AddRuleForAllLevels("NewRelicFileTarget");LogManager.Configuration = loggerConfig;var logger = LogManager.GetLogger("Example");NLog 拡張機能を設定し、ログ ファイルを更新したら、New Relic にデータを送信するように拡張機能を設定できます。ログを転送するにはいくつかのオプションがあります。以下は、コンテキストでログのインフラストラクチャ エージェントを使用した構成例です。
logs:- name: application-logfile: C:\logs\log4netExample.log.json # Path to a single log file
ファイルベースの構成プロバイダーを使用して、NewRelicNLog拡張機能を構成することもできます。次のサンプルコードは、 App.config
ファイルに含まれる設定に基づいてロガーを作成します。
Instantiating Logger using .config
file
var logger = LogManager.GetLogger("NewRelicLog");logger.Info("Hello, New Relic!");
Sample App.config
file
<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <extensions> <add assembly="NewRelic.LogEnrichers.NLog" /> </extensions> <targets> <target name="NewRelicLogFile" xsi:type="File" fileName="C:/path/to/NewRelicLog.json"> <layout xsi:type="newrelic-jsonlayout"> </layout> </target> </targets> <rules> <logger name="NewRelicLog" minlevel="Info" writeTo="newRelicLogFile" /> </rules> </nlog></configuration>
Serilog 2.5以上の拡張機能の設定
当社の Serilog エクステンションを使用すると、ログデータをNew Relicプラットフォームの他の部分の関連データとリンクさせることができます。これには
Serilogは、アプリケーションからのログメッセージを記録し、メッセージデータを格納するためのLogEvent
を作成する構造化されたログフレームワークです。エンリッチャーを使用すると、ログイベントに追加情報を追加できます。シンクとフォーマッタを使用すると、これらのログイベントをフォーマットして出力し、ダウンストリームで使用および表示できます。
次の図は、New Relic Serilog エクステンションの特定のコンポーネントを強調して、Serilog を介したログメッセージの流れを示しています。多くのログフォワーダーが利用できます。この例では、 Fluentd を使用しています。
New Relic Enricher: NewRelicEnricher
は、.NET エージェント ( APIを使用) からのコンテキスト情報を、アプリケーションによって生成されたログイベントに追加します。 このコンテキスト情報はリンク メタデータと呼ばれ、 New Relicによって、ログメッセージを、それが作成されたトランザクションおよびスパンにリンクするために使用されます。
New Relic Formatter: NewRelicFormatter
は、強化されたログイベントをNew Relicが想定する JSON 形式に変換します。 シンクは、ログフォワーダーが期待する場所にあるファイルに JSON を出力するように Serilog に指示します。
New Relic Log Forwarder: ログフォワーダーは、適切にフォーマットされ強化されたログデータを FileTarget
出力からNew Relicログ エージェントに送信するように構成されています。
Serilogのログイベントについては、GitHubのSerilogドキュメント( )を参照してください。 。
Serilog拡張機能のコンテキストでログを設定するには
Visual Studio NuGetパッケージマネージャーを使用して、
NewRelic.LogEnrichers.Serilog
パッケージを見つけてインストールします。アプリケーションコードで、ログ設定を更新して
NewRelicEnricher
とNewRelicFormatter
を追加します。次のコード例は、NewRelicリンクメタデータでログイベントを強化します。既存のログファイルに加えて、ログフォワーダーが使用できるように、
C:\logs\SerilogExample.log.json
の特定のJSON形式で新しいログファイルを出力します。var loggerConfig = new LoggerConfiguration();loggerConfig.Enrich.WithThreadName().Enrich.WithThreadId().Enrich.WithNewRelicLogsInContext().WriteTo.File( path: @"C:\logs\ExistingLoggingOutput.txt").WriteTo.File(formatter: new NewRelicFormatter(),path: @"C:\logs\SerilogExample.log.json");var log = loggerConfig.CreateLogger();この設定により、新しいJSONファイルがディスクに書き込まれます。これらの 設定オプション の中には、使用するディスク容量やシンクのパフォーマンスを管理するのに役立つものもあります。
restrictedToMinimumLevel
buffered
rollingInterval
rollOnFileSizeLimit
retainedFileCountLimit
必須ではありませんが、 Serilog Asynchronous Sink Wrapper を使用すると、ログファイルのフォーマットや出力を別のスレッドで行うことができ、パフォーマンスの向上に役立ちます。
Serilog 拡張機能を構成し、ログ ファイルを更新したら、ログを転送するためのオプションがいくつかあります。以下は、コンテキストでログのインフラストラクチャ エージェントを使用した構成例です。
logs:- name: application-logfile: C:\logs\log4netExample.log.json # Path to a single log file
また、New Relic Serilog エクステンションをファイルベースの設定プロバイダで設定することもできます。以下の追加 NuGet パッケージが必要です。
Serilog.Settings.Configuration
次のサンプルコードは、
appSettings.json
ファイルに含まれる設定に基づいてロガーを作成します。Instantiating logger using
appsettings.json
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");var configuration = builder.Build();var logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger();Sample
appsettings.json
file{"Serilog": {"Using": ["Serilog.Sinks.Console","Serilog.Sinks.File","NewRelic.LogEnrichers.Serilog"],"MinimumLevel": "Debug","Enrich": ["WithNewRelicLogsInContext"],"WriteTo": [{"Name": "File","Args": {"path": "C:\\Logs\\SerilogExample.log.json","formatter": "NewRelic.LogEnrichers.Serilog.NewRelicFormatter, NewRelic.LogEnrichers.Serilog"}}],"Properties": {"Application": "NewRelic Logging Serilog Example"}}}次のサンプルコードは、
web.config
ファイルに含まれる設定に基づいてロガーを作成します。 Serilog.Settings.AppSettingsNuGetパッケージが必要です。Instantiating logger using
.config
filevar logger = new LoggerConfiguration().ReadFrom.AppSettings().CreateLogger();Sample
web.config
file<?xml version="1.0" encoding="utf-8"?><configuration><appSettings><add key="serilog:using:NewRelic" value="NewRelic.LogEnrichers.Serilog" /><add key="serilog:using:File" value="Serilog.Sinks.File" /><!--Add other enrichers here--><add key="serilog:enrich:WithNewRelicLogsInContext" /><add key="serilog:write-to:File.path" value="C:\logs\SerilogExample.log.json" /><add key="serilog:write-to:File.formatter" value="NewRelic.LogEnrichers.Serilog.NewRelicFormatter, NewRelic.LogEnrichers.Serilog" /></appSettings>