2016-11-21 5 views
2

로깅 용으로 "NLog.Extensions.Logging"을 사용하고 있었고 사용자 ID를 로깅해야 "NLog.Web.AspNetCore"가 가능하다는 것을 알았습니다. "nlog.config"파일은 "aspnet-user-identity"를 기록하도록 구성됩니다. 그러나 로그를 볼 때 사용자 ID 부분은 항상 빈 문자열이며 다른 열은 꽤 잘 보입니다. 내가 놓친 게 있니?Net 코어 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"매개 변수를 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