bugfix> c#-4.0 > 投稿

タイトルが示唆しているように、.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} | &quot;${message}&quot;" 
    createDirs="true" />
    </target>
</targets>
<rules>
    <logger name="test" minlevel="Info" writeTo="concurrents"></logger>
</rules>

皆さんご存知のように、

同時リクエストが入ったとき、新しいGuidを作成し、それを {var} に割り当てることで、すべてのリクエストを記録しようとしています。そして、変数の名前でファイルを作成します。

ログはどういうわけか混同され、リクエストの半分は1つのファイルにあり、残りの半分は別のファイルにあります。

正直に言うと、私は知っておくべきですが、どこがわからないかの基本的なことを見逃していると思います。

誰かが正しい方向を指し示し、現在のリクエストをさまざまなファイルに記録する方法を理解できるようになれば幸いです。

乾杯