扩展自定义日志,自动设置当前请求的Action和Controller名称
This commit is contained in:
parent
0504d18429
commit
52d9f85382
@ -0,0 +1,41 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
namespace Admin.NET.Core.Extension;
|
||||
public static class LogInformationExtension
|
||||
{
|
||||
/// <summary>
|
||||
/// 添加自定义日志 自动设置当前请求的Action和Controller名称
|
||||
/// </summary>
|
||||
/// <param name="logger"></param>
|
||||
/// <param name="title"></param>
|
||||
/// <param name="logMessage"></param>
|
||||
/// <param name="args"></param>
|
||||
public static void AddLog(this ILogger logger, string title, string logMessage, params object[] args)
|
||||
{
|
||||
var request = App.HttpContext.Request;
|
||||
//获取当前路由信息
|
||||
var route = request.RouteValues.Values;
|
||||
var scheme = request.Scheme; // 协议(http 或 https)
|
||||
var host = request.Host.Value; // 主机名(包括端口)
|
||||
var path = request.Path.Value; // 路径
|
||||
var queryString = request.QueryString.Value; // 查询字符串
|
||||
// 拼接完整链接
|
||||
var fullUrl = $"{scheme}://{host}{path}{queryString}";
|
||||
|
||||
// 写入上下文
|
||||
using var scope = logger.ScopeContext(ctx => ctx.Set("Title", title)
|
||||
.Set("Action", route.FirstOrDefault()?.ToString())
|
||||
.Set("Controller", route.Count > 1 ? route.Skip(1).FirstOrDefault().ToString() : "")
|
||||
.Set("Url", fullUrl)
|
||||
.Set("Method", request.Method)
|
||||
);
|
||||
// 记录日志
|
||||
logger.LogInformation(logMessage, args);
|
||||
|
||||
// 使用方法 先注入_logger
|
||||
// _logger.AddLog("日志标题", "日志内容");
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user