タイトルが示唆しているように、.NET Web APIコントローラーへの個別の要求を個別のファイルに記録しようとしています。
{var}
の導入により
、ここに私のc#コード内で試しているものがあります。
private static Logger logger = LogManager.GetLogger("test");
[HttpPost, Route("xyz")]
public IHttpActionResult Post(Obj value)
{
var guid = Guid.NewGuid();
LogManager.Configuration.Variables["test"] = guid.ToString();
logger.Info(value);
//do my execution here.
}
私のNlog.Configは次のようになります。
<variable name="test" value=""/>
<targets async="true">
<target xsi:type="File"
name="concurrents"
fileName="${basedir}/nlogs/${logger}/${var:test}.log"
layout="${uppercase:${level}} | ${callsite} | ${date:format=HH\:mm\:ss.fff} | "${message}""
createDirs="true" />
</target>
</targets>
<rules>
<logger name="test" minlevel="Info" writeTo="concurrents"></logger>
</rules>
皆さんご存知のように、
同時リクエストが入ったとき、新しいGuidを作成し、それを
{var}
に割り当てることで、すべてのリクエストを記録しようとしています。そして、変数の名前でファイルを作成します。
ログはどういうわけか混同され、リクエストの半分は1つのファイルにあり、残りの半分は別のファイルにあります。
正直に言うと、私は知っておくべきですが、どこがわからないかの基本的なことを見逃していると思います。
誰かが正しい方向を指し示し、現在のリクエストをさまざまなファイルに記録する方法を理解できるようになれば幸いです。
乾杯
回答 1 件
関連記事
- Pythonのマルチプロセッシングでさまざまなプロセスによって生成されたファイルを保存するための最も安全な方法は何ですか?
- 作成された異なる名前と異なる日付のファイルに触れる方法
- PHP変数をさまざまなファイルでアクセスできるようにする方法は?
- URLプールから同時GETリクエストを行う方法
- 異なるファイルの継承クラスは、「this」の結果を未定義に親します
- 異なるディレクトリからの同じ名前の多くのcsvファイルを融合する
- RSYNCがバックアップターゲット上の異なるファイルで2つの読み取りプロセスを使用するのはなぜですか?
- (C ++)変数名を呼び出す方法、またはさまざまなcppファイルで変数の値を取得する方法は?
- Googleスプレッドシート:さまざまなフォルダにあるファイルのIDを取得します
- 同じサブディレクトリで別のフォルダにあるファイルを解凍する方法
変数はグローバルレベルであり、マルチスレッド環境(httpリクエスト)では機能しません
良い解決策は、HttpContextレベルでGUIDを設定することです。
そして使用
ASP.NET CoreにはNLog.Web.AspNetCoreパッケージが必要です-ASP.NET非コアにはNLog.Webが必要です