C# NLog-根据当前请求呈现用户名
我根据文档设置NLog日志记录提供程序。我正在使用AspNetCore.Identity进行身份验证/授权,我发现通过在布局渲染器中包含${aspnet user Identity},我还可以记录请求者的用户名 问题是,用户名没有显示:C# NLog-根据当前请求呈现用户名,c#,asp.net-core,logging,asp.net-identity,nlog,C#,Asp.net Core,Logging,Asp.net Identity,Nlog,我根据文档设置NLog日志记录提供程序。我正在使用AspNetCore.Identity进行身份验证/授权,我发现通过在布局渲染器中包含${aspnet user Identity},我还可以记录请求者的用户名 问题是,用户名没有显示: 2020-06-12 18:08:04.4495|ERROR|API.Controllers.ReportController|Hi |url: https://localhost/api/v1/reports/6|action: GetReport|user:
2020-06-12 18:08:04.4495|ERROR|API.Controllers.ReportController|Hi |url: https://localhost/api/v1/reports/6|action: GetReport|user:
我想要的是:
2020-06-12 18:08:04.4495|ERROR|API.Controllers.ReportController|Hi |url: https://localhost/api/v1/reports/6|action: GetReport|user: example@example.com
以下是我的配置:
nlog.config
Program.cs-CreateWebHostBuilder方法
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
//附加其他JSON文件
.ConfigureAppConfiguration((hostingContext,config)=>
{
config.AddJsonFile(Path.Combine(Environment.CurrentDirectory,“wwwroot”,“Configurations”,“EventTypes.json”),可选:false,reloadOnChange:true);
config.AddJsonFile(Path.Combine(Environment.CurrentDirectory,“wwwroot”,“Notifications”,“NotificationLangTemplates.json”),可选:false,reloadOnChange:true;
})
.ConfigureLogging(日志=>
{
logging.ClearProviders();
})
.UseNLog()
.UseStartup();
示例控制器-当我尝试记录任何内容时
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[Produces("application/json")]
public class UserReportController : Controller
{
private readonly ILogger<UserReportController> logger;
public UserReportController(ILogger<UserReportController> logger)
{
this.logger = logger;
}
[HttpGet(ApiRoutes.UserReports.Get)]
public async Task<IActionResult> GetReport(int reportId)
{
logger.LogError("Log error");
return Ok();
}
}
[授权(AuthenticationSchemes=JwtBearerDefaults.AuthenticationScheme)]
[产生(“应用程序/json”)]
公共类UserReportController:控制器
{
专用只读ILogger记录器;
公共用户报告控制器(ILogger记录器)
{
this.logger=记录器;
}
[HttpGet(apirouts.UserReports.Get)]
公共异步任务GetReport(int reportId)
{
logger.LogError(“日志错误”);
返回Ok();
}
}
这可能会对您有所帮助。看起来是个重复的问题。这可能对你有帮助。看起来是个重复的问题。
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
//attach additional JSON files
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddJsonFile(Path.Combine(Environment.CurrentDirectory, "wwwroot", "Configurations", "EventTypes.json"), optional: false, reloadOnChange: true);
config.AddJsonFile(Path.Combine(Environment.CurrentDirectory, "wwwroot", "Notifications", "NotificationLangTemplates.json"), optional: false, reloadOnChange: true);
})
.ConfigureLogging(logging =>
{
logging.ClearProviders();
})
.UseNLog()
.UseStartup<Startup>();
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[Produces("application/json")]
public class UserReportController : Controller
{
private readonly ILogger<UserReportController> logger;
public UserReportController(ILogger<UserReportController> logger)
{
this.logger = logger;
}
[HttpGet(ApiRoutes.UserReports.Get)]
public async Task<IActionResult> GetReport(int reportId)
{
logger.LogError("Log error");
return Ok();
}
}