2016-11-21 71 views
2

我正在使用「NLog.Extensions.Logging」進行日誌記錄,並且需要記錄用戶身份,並發現它可以使用「NLog.Web.AspNetCore」。 「nlog.config」文件被配置爲記錄「aspnet-user-identity」。但是,當我查看日誌時,用戶標識部分總是空字符串,其他列看起來相當不錯。我錯過了什麼嗎?Net Core NLog.Web「aspnet-user-identity」爲空?

我的配置文件的一部分是在這裏:

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

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

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

和插入命令插入一個日誌以「@identity」參數數據庫,但它始終是空的就像我說的。

+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

謝謝@ Julian!這是問題:) – kizilsu

+0

我需要使用'services.AddSingleton ();'因爲'IHttpContextAccessor'在NLog.Web和Microsoft.AspNetCore.Http之間是隱藏的。但它確實解決了它:-) – ArieKanarie