コンテキスト内のAPMログは、ログをアプリ、ホスト、およびその他のエンティティのすべてのテレメトリデータに接続します。このすべてのデータを1つのツールにまとめることで、次のことが可能になります。
- タイムクリティカルな問題のトラブルシューティングを行うときに、何千ものログのノイズをカットして、最も関連性の高いログのみが自動的に表示されるようにします。
- 複数のタイプのテレメトリデータ内をナビゲートし、データを元の問題に関連付けます。
- UIの同じ場所から、より詳細な情報に簡単にドリルダウンできます。
- 問題を特定して解決するために必要なログ行を見つけます。
例を含む詳細については、コンテキストでAPMログを開始する方法を学習してください。
コンテキストオプションの自動ログ
アプリのログを送信し、メタデータをNew Relicに自動的にリンクするように、コンテキストでAPMログを構成する3つのオプションがあります。
これは最も単純なアプローチであり、ログフォワーダーの設定にアクセスしたり関心を持ったりしていない開発者や、アプリのコンテキストでログやその他のリンクメタデータの機能を確認したいアカウントに最適です。多くのオーバーヘッド。
このオプションを使用すると、ログにspan.id
、 trace.id
、 hostname
、 entity.guid
、およびentity.name
が含まれます。これらの属性は、ログをスパン、トレース、およびその他のテレメトリに自動的にリンクし、トラブルシューティングを容易にします。
ログ転送機能を備えたエージェントバージョン( .NETエージェント9.7.0以降)をインストールし、構成を更新して転送を有効にするだけです。
<applicationLogging enabled="true"> <forwarding enabled="true" /></applicationLogging>
このオプションは、環境変数NEW_RELIC_APPLICATION_LOGGING_FOWARDING_ENABLED=true
を設定することによっても有効にできます。環境変数の値が存在する場合は、構成ファイルの値よりも優先されます。
このオプションは、将来のエージェントバージョンでデフォルトでオンになる可能性があります。
オプションの調整:
これを有効にすると、1分ごとにNewRelicに送信されるログの最大数も制御できます。デフォルト値は10,000です。 60秒のウィンドウで10,000を超えるログが受信されると、ログのサンプリングが開始されます。
より多くのログを受信するには、より大きな数値に設定します。受け取るログの数を減らすには、数値を小さく設定します。任意の整数が有効です。
<applicationLogging enabled="true"> <forwarding enabled="true" maxSamplesStored="10000" /></applicationLogging>
この設定は、環境変数NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED
を設定することによっても調整できます。環境変数の値が存在する場合は、構成ファイルの値よりも優先されます。
既存のログ転送ソリューションがあり、コンテキストで自動ログを使用するようにエージェントを更新している場合は、手動ログ転送を必ず無効にしてください。それ以外の場合、アプリは二重のログ行を送信します。アカウントによっては、これにより二重請求が発生する可能性があります。詳細については、手順に従って特定のログフォワーダーを無効にしてください。
あなたが好きなログフォワーダーをすでに持っていますか?私たちはあなたをカバーしています!言語エージェントは、自動ログインコンテキスト機能へのアクセスを提供するために必要なリンクメタデータでログを装飾できます。
このオプションは、エージェント内転送では使用しないでください。エージェント内転送が有効になっているときに外部ログフォワーダーを使用してログをNewRelicに送信すると、ログがNewRelicに2回送信されます。アカウントによっては、二重請求が発生する場合があります。
重要
.NETエージェントのローカルログ装飾は、ログメッセージを直接変更しません。メッセージにNR-LINKINGトークンを書き出すには、ロギングフレームワークの構成を更新する必要があります。
このオプションを使用する場合は、エージェント内転送構成オプションが無効になっていることを確認してください。
構成でログの装飾を有効にしてから、エージェントを再起動してログの装飾を開始します。
<applicationLogging enabled="true"><localDecorating enabled="true" /></applicationLogging>このオプションは、環境変数
NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED=true
を設定することによっても有効にできます。環境変数の値が存在する場合は、構成ファイルの値よりも優先されます。デコレータは、すべてのログメッセージに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}|ログがトランザクションの外部で発生した場合、またはアプリケーションのコンテキストに適用できない場合、一部の属性は空になる可能性があります。装飾フォーマッターを使用するには、手動プロセスよりもこのオプションをお勧めします。
重要
キー名にハイフンを使用できないロギングフレームワークをサポートするために、ロギングフレームワークから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 :NR_LINKINGというメンバーを含むようにレイアウトを更新します。
<layout type='log4net.Layout.SerializedLayout, log4net.Ext.Json'><decorator type='log4net.Layout.Decorators.StandardTypesFlatDecorator, log4net.Ext.Json' />...<member value='NR_LINKING' /></layout>log4net.Appender.AdoNetAppender :このアペンダーは、他のレイアウトとはわずかに異なる構成になっています。メタデータを含めるには、「メッセージ」パラメータを更新する必要があります。次の例は、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を構成する方法を示しています。他のシンクとフォーマッターはサポートされていますが、以下にはリストされていません。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();自動プロパティ出力を備えたJSONFormatterデフォルトでは、JsonFormatterはメッセージのすべてのプロパティを書き出します。
Log.Logger = new LoggerConfiguration().MinimumLevel.Override("Microsoft", LogEventLevel.Information).Enrich.FromLogContext().WriteTo.Console(new JsonFormatter());.CreateLogger();Microsoft.Extensions.Logging構成
Microsoft.Extensions.Loggingの場合、.NETエージェントは、新しく作成されたスコープにメッセージとともにNR-LINKINGトークンを格納します。 Microsoft.Extensions.Loggingは出力を他のフレームワークに依存しているため、詳細については、上記のlog4netまたはSerilogの構成を参照してください。
言語エージェントがログを転送および装飾できるようになる前は、アプリケーションを更新してリンクメタデータを送信することにより、コンテキスト内でログを有効にすることができました。
このオプションは引き続きサポートされていますが、推奨されなくなりました。このアプローチを使用する手順については、コンテキストオプションの手動ログを参照してください。
また、この方法では、コンテキストでログを有効にする前に、ログフォワーダーをインストールする必要があります。ログフォワーダーがない場合は、NewRelicUIでインフラストラクチャエージェントを使用するように求められます。
既存のログ転送ソリューションを使用することにし、後でエージェントを更新してコンテキストで自動ログを使用することにした場合は、必ず手動ログ転送を無効にしてください。それ以外の場合、アプリは二重のログ行を送信します。アカウントによっては、これにより二重請求が発生する可能性があります。詳細については、手順に従って特定のログフォワーダーを無効にしてください。
データを保護する
ログには、HIPAAまたはその他のコンプライアンスプロトコルによって保護されている機密情報が含まれている場合があります。デフォルトでは、クレジットカードや社会保障番号などのアイテムのように見える番号パターンを難読化しますが、追加情報をハッシュまたはマスクする必要がある場合があります。
詳細については、難読化の式とルールに関するドキュメントを参照してください。 New Relic UIを使用するか、GraphQL APIであるNerdGraphを使用して、ログデータをハッシュまたはマスクできます。
データを調べる
ログデータを最大限に活用するには:
- [ APMの概要]ページで、 Webトランザクションのタイムチャートをクリックして、特定の時点に関連付けられたログを表示します。
- エラーに関連するログを表示するには、アプリの[エラー]受信ボックスを確認してください。
- 分散トレースを使用して、個々のトレースに関連付けられているログを確認します。
- Logs UIを使用して、プラットフォーム全体でより多くのログデータを探索します。
- ログ出力と重大度に基づいてアラートを設定します。
- ログデータ専用のUIを使用してデータをクエリし、結果を含むダッシュボードを作成します。
トラブルシューティングのヒント
通常、コンテキストでAPMログを有効にした後、ログは1分以内に表示され始めます。アプリのトリアージ>ログセクションを確認します。また、そこでエラーに関連するログパターンが表示されるようになります。
エラーまたはトレースのログが表示されない場合は、アプリにログがない可能性があります。 UIページを更新するか、選択した期間を変更してみてください。
自動ロギングを無効にする
APMログインコンテキストは、APMエージェントログデータを自動的に転送し、デフォルトで有効になっています。これは、セキュリティ、コンプライアンス、請求、またはシステムパフォーマンスに悪影響を与える可能性があります。詳細について、またはデフォルト設定を調整する必要がある場合は、手順に従って自動ロギングを無効にしてください。
コンテキストオプションの手動ログ
手動プロセスを使用して.NETのコンテキストでログを設定する必要がある場合は、次の手順に従います。
- New Relic の ロギングの設定がすでに完了していることを確認してください。これには、アプリケーションのログを収集し、New Relic に転送されるメタデータを拡張する、サポートされているログフォワーダーの設定が含まれます。
- をインストールするか、 を最新の .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 を使用しています。
アペンダー: NewRelicAppender
は、(APIを使用して).NETエージェントからのコンテキスト情報をアプリケーションによって生成されたログイベントに追加します。リンクメタデータと呼ばれるこのコンテキスト情報は、New Relicがログメッセージを、それらが作成されたトランザクションとスパンにリンクするために使用されます。このアペンダーは、さらに処理するために、強化されたログイベントをダウンストリームアペンダーに渡します。
NewRelicAppender
はForwardingAppender
タイプであるため、チェーンの最初のアペンダーである必要があります。また、動作するために、その子として実際の出力先に書き込むことができる別のアペンダーが必要です。
レイアウト: NewRelicLayout
は、強化されたログイベントをNewRelicが期待するJSON形式にフォーマットします。このレイアウトが割り当てられているアペンダーは、ログフォワーダーが予期する場所にあるファイルにJSONを出力するようにlog4netに指示します。
ログフォワーダー: ログフォワーダーは、出力フォルダを監視し、適切にフォーマットされ、エンリッチされたログ情報を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拡張機能を構成し、ログファイルを更新した後、NewRelicにデータを送信するように拡張機能を構成できます。ログを転送するためのいくつかのオプションがあります。コンテキスト内のログにインフラストラクチャエージェントを使用する構成例を次に示します。
logs:
名前:application-logファイル:C:\ logs \ log4netExample.log.json#単一のログファイルへのパス
# インフラストラクチャエージェントフォワーダーを使用するためのドキュメント
NLog拡張機能の設定
当社の NLog 4.5 以上 エクステンションを使用すると、ログデータを New Relic プラットフォームの他の部分の関連データとリンクさせることができます。
New Relic NLog拡張機能は、NewRelicロギングエンドポイントで必要とされる方法でログイベントをフォーマットするNewRelicJsonLayout
を提供します。次に、アプリケーションに接続すると、.NETエージェントからのコンテキスト情報が追加されます。次に、ログデータを出力フォルダーに書き込むようにターゲットを構成できます。ログフォワーダーはこのフォルダーを監視し、ログ情報をNewRelicに段階的に送信できます。
次の図は、New Relic NLog エクステンションの特定のコンポーネントを強調して、NLog を介したログメッセージの流れを示しています。
New Relic JSONレイアウト: NewRelicJsonLayout
は、.NETエージェントからのコンテキスト情報(APIを使用)をアプリケーションによって生成されたログイベントに追加し、NewRelicが期待するJSON形式でログメッセージを出力します。リンクメタデータと呼ばれるこのコンテキスト情報は、ログメッセージをトランザクションとそれらが作成されたスパンにリンクするためにNewRelicによって使用されます。
NewRelicAppender
はForwardingAppender
タイプであるため、チェーンの最初のアペンダーである必要があります。また、動作するために、その子として実際の出力先に書き込むことができる別のアペンダーが必要です。
ファイルターゲット: FileTarget
は、ログメッセージが書き込まれるディスク上のファイルを定義します。そのターゲットにNewRelicJsonLayout
を追加すると、NewRelicに転送するために出力を正しくフォーマットできます。
ログフォワーダー:ログフォワーダーは、適切にフォーマットされ、強化されたログデータをFileTarget
出力からNewRelicロギングエンドポイントに送信するように構成されています。
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 は必須ではありませんが、ログファイルのフォーマットや出力を別のスレッドで行うことで、パフォーマンスの向上に役立つ場合があります。
MDCおよびMDLCのデータを収集しない(デフォルト)。
次のコード例は、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");MDCまたはMDLCのデータを収集する。
アプリケーションがMDCまたはMDLCを使用している場合は、それらのコレクションにアイテムを含めるように
NewRelicJsonLayout
を構成できます。次のコード例は、MDCおよびMDLCデータの収集を可能にする追加の構成を追加します。前の例と同様に、ログフォワーダーが使用できるように、C:\logs\NLogExample.log.json
に特定のJSON形式で新しいログファイルを出力します。var loggerConfig = new LoggingConfiguration();var newRelicFileTarget = new FileTarget("NewRelicFileTarget");var newRelicLayout = new NewRelicJsonLayout{IncludeMdc = `true,`IncludeMdlc = `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拡張機能を構成し、ログファイルを更新したら、NewRelicにデータを送信するように拡張機能を構成できます。ログを転送するためのいくつかのオプションがあります。コンテキスト内のログにインフラストラクチャエージェントを使用する構成例を次に示します。
logs:名前:application-logファイル:C:\ logs \ log4netExample.log.json#単一のログファイルへのパス
# インフラストラクチャエージェントフォワーダーを使用するためのドキュメント
ファイルベースの構成プロバイダーを使用して、NewRelicNLog拡張機能を構成することもできます。次のサンプルコードは、 App.config
ファイルに含まれる設定に基づいてロガーを作成します。
.config
ファイルを使用したロガーのインスタンス化
var logger = LogManager.GetLogger("NewRelicLog");logger.Info("Hello, New Relic!");
サンプルApp.config
ファイル
<?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を使用)からのコンテキスト情報を、アプリケーションによって生成されたログイベントに追加します。リンクメタデータと呼ばれるこのコンテキスト情報は、ログメッセージをトランザクションとそれらが作成されたスパンにリンクするためにNewRelicによって使用されます。
New Relic Formatter : NewRelicFormatter
は、強化されたログイベントをNewRelicが期待するJSON形式に変換します。シンクは、ログフォワーダーが予期する場所にあるファイルにJSONを出力するようにSerilogに指示します。
New Relicログフォワーダー:ログフォワーダーは、適切にフォーマットされ、強化されたログデータをFileTarget
出力からNewRelicログエンドポイントに送信するように構成されています。
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:
名前:application-logファイル:C:\ logs \ log4netExample.log.json#単一のログファイルへのパス
# インフラストラクチャエージェントフォワーダーを使用するためのドキュメント
また、New Relic Serilog エクステンションをファイルベースの設定プロバイダで設定することもできます。以下の追加 NuGet パッケージが必要です。
Serilog.Settings.Configuration
次のサンプルコードは、
appSettings.json
ファイルに含まれる設定に基づいてロガーを作成します。を使用してロガーをインスタンス化する
appsettings.json
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");var configuration = builder.Build();var logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger();サンプル
appsettings.json
ファイル{"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パッケージが必要です。.config
ファイルを使用してロガーをインスタンス化するvar logger = new LoggerConfiguration().ReadFrom.AppSettings().CreateLogger();サンプル
web.config
ファイル<?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>