[英]How can I make my code more reusable for logging in my controllers
I am using same code for every controller.我为每个控制器使用相同的代码。 OnActionExecuting is called every time before action executed.每次执行操作之前都会调用 OnActionExecuting。 how can i refactor the given code?我如何重构给定的代码?
public class HomeController : Controller
{
private readonly ILogger<AccountController> logger;
private string userId;
private string path;
public AccountController(
ILogger<AccountController> logger)
{
this.logger = logger;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
userId = User.FindFirstValue(ClaimTypes.NameIdentifier)
path = $"{context.HttpContext.Request.Path.Value}[{context.HttpContext.Request.Method}]";
logger.LogDebug($"{path} started. User(id): {userId}.");
}
}
Example of how i am using it:我如何使用它的示例:
logger.LogInformation($"{path} Was approved for User(id) + {userId}.");
First, create a BaseController :首先,创建一个 BaseController :
public class BaseController : Controller
{
private readonly ILogger<BaseController> logger;
private string userId;
private string path;
public BaseController(IServiceProvider serviceProvider)
{
this.logger = serviceProvider.GetRequiredService<ILogger<BaseController>>();
}
public override void OnActionExecuting(ActionExecutingContext context)
{
userId = User.FindFirstValue(ClaimTypes.NameIdentifier)
path = $"{context.HttpContext.Request.Path.Value}[{context.HttpContext.Request.Method}]";
logger.LogDebug($"{path} started. User(id): {userId}.");
}
}
Then, create HomeController然后,创建 HomeController
public class HomeController : BaseController
{
public HomeController(IServiceProvider serviceProvider) : base(serviceProvider)
{
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.