当前位置: 首页 > news >正文

记录log到数据库

用处:写一个过滤器,调用action方法时,将详细信息记录到数据库的log表中。

using Microsoft.AspNetCore.Mvc.Filters;namespace WeCharGroupTest.Untities
{public class ApiLogFilter : IAsyncActionFilter{private readonly ILogger _logger;public ApiLogFilter(ILogger<ApiLogFilter> logger){_logger = logger;}public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next){//S_LOG_INFO s_Log_Info = new S_LOG_INFO();//首先定义一个log表,是为了将历史记录写入数据库中//请求人foreach (var item in context.HttpContext.Request.Headers){//s_Log_Info.ERROR_DRI += item.Key + ":"+ item.Value+"; ";if (item.Key.Equals("Operator"))s_Log_Info.C_EMP_NO = item.Value.ToString();if (item.Key.Equals("X-Real-IP"))s_Log_Info.CLIENT_IP = item.Value.ToString();if (item.Key.Equals("Menu_id"))s_Log_Info.MENU_ID = item.Value.ToString();}//请求参数object  a =  context.ActionArguments.ToJson();var resultContext = await next();try{s_Log_Info.REQUEST_HOST = resultContext.HttpContext.Request.Host.ToString();//程序所在的服务器ip+端口号s_Log_Info.REQUEST_PATH = resultContext.HttpContext.Request.Path;//请求的地址,例/api/itms_05_api_Cosmetic_19_Risk_Check_Dashboard/Send_Risk_Check_New_Model_Email_S0519s_Log_Info.REQUEST_METHOD = resultContext.HttpContext.Request.Method;//请求方法,例POST}catch (System.Exception){s_Log_Info.ERROR = resultContext.Exception.Message.ToString();s_Log_Info.ERROR_MSG = resultContext.Exception.StackTrace.ToString();}finally{List<S_LOG_INFO> list = new(){s_Log_Info};//调用bll层,写入数据库的log表中itms_01_Bll_Common_01_System.M_s_log_info(list);}}}
}

其中,上面的ToJSon是一个自定义的扩展方法

    public static class ObjectExtensions{/// <summary>/// </summary>/// <param name="obj"></param>/// <returns></returns>public static string ToJson(this object obj){var serializerSettings = new JsonSerializerSettings{DateFormatString = "yyyy-MM-dd HH:mm:ss",ContractResolver = new CamelCasePropertyNamesContractResolver()};return JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.None, serializerSettings);}}


http://www.mrgr.cn/news/21598.html

相关文章:

  • Python中如何实现列表去重
  • 828华为云征文|华为云Flexus X实例docker部署MinIO对象存储系统obs
  • DBAPI如何使用内存缓存
  • 软考-高级架构师Keywords(上半部分)
  • 如何在在Java中操作Redis
  • STM32双轮平衡小车(基于STM32F103C8T6HAL库)
  • 个人随想-一个有意思的鼠标截屏RAG
  • Spring-循环依赖
  • SIGMOD-24概览Part2: Industry Session (Query Engines)
  • Springboot工程配置https访问
  • 英文翻译工具怎么选?这4款值得收藏。
  • gpedit.msc本地组策略编辑器,结果发现竟然打不开了
  • sunxi-fel 的相关命令
  • 文本分类场景下微调BERT
  • 类和对象的概述以及this指针的应用
  • Python基础—Python 中pip的8个必备命令
  • 力扣最热一百题——最大子数组和
  • 最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)
  • 超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密
  • SpringBoot登录退出|苍穹外卖登录退出分析