2016-11-21 7 views
2

私はロギングに「NLog.Extensions.Logging」を使用していましたが、ユーザーIDをログに記録する必要があり、「NLog.Web.AspNetCore」で可能であることがわかりました。 "nlog.config"ファイルは、 "aspnet-user-identity"を記録するように設定されています。しかし、私がログを見ると、ユーザーID部分は常に空文字列ですが、他の列はかなり見栄えが良いです。何か不足していますか?ネットコアNLog.Web "aspnet-user-identity"が空ですか?

私の設定ファイルの一部はここにある:

<extensions> 
    <assembly="NLog.Web.AspNetCore" /> 
</extensions> 

<parameter name="@identity" layout="${aspnet-user-identity}"/> 

<logger name="*" minlevel="Trace" appendTo="database"/> 

とINSERTコマンドは「@identity」パラメータでdbにログを挿入しますが、私が言ったように、それは常に空です。

+1

は)あなたが 'app.AddNLogWeb(と呼んでいた;' startup.csに? https://github.com/NLog/NLog.webを参照してください。 – Julian

+0

はい私はメソッドを@Julianと呼びました。質問に追加するのを忘れました。 – kizilsu

+0

'context.User.Identity.Name'を使用しています。ここで' context'は 'GetService ()'です。まだ動作しているかどうか確認できますか? – Julian

答えて

2

私は互換性に影響する変更がありました

、私は問題を発見したと思う、IHttpContextAccessorサービスはもはやデフォルトで登録されていません。 (See announcement

だからあなたstartup.csに追加します。

public void ConfigureServices(IServiceCollection Services) 
{ 
    //call this in case you need aspnet-user-authtype/aspnet-user-identity 
    services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 
} 
+0

ありがとう@ジュリアン!それは問題でした:) – kizilsu

+0

'IHttpContextAccessor'がNLog.WebとMicrosoft.AspNetCore.Httpの間で曖昧だったので、' services.AddSingleton (); 'を使う必要がありました。しかしそれはそれを解決しました:-) – ArieKanarie

関連する問題