我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用Func<T, TResult> 委托实现API日志的记录

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用Func<T, TResult> 委托实现API日志的记录

这篇文章主要介绍了如何使用Func<T, TResult> 委托实现API日志的记录,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

问题

平常我们开发web  api的时候,一般是需要记录api的输入输出信息,方便后续排查问题;那么我们一般怎么做的,一般是我们在一个公共地方的写个公共方法控制输入输出。这时候Func

什么是Func

Func<T, TResult>封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。使用Func<T, TResult> 委托表示一种能以参数形式传递的方法,而不用显式声明自定义委托。 封装的方法必须与此委托定义的方法签名相对应。 也就是说,封装的方法必须具有一个通过值传递给它的参数,并且必须返回值。在使用 Func<T, TResult> 委托时,不必显式定义一个封装只有一个参数的方法的委托。

主要代码实现

1、定义委托。

private ApiResult HandleWork(CreateBQoolSyncEventModel syncModel, Func<ApiResult> work)         {             //先記錄到 Db Event             _innerBQoolSyncEventLogService.Create(syncModel);              var result = new ApiResult();             try             {                 _logger.Info($"Call Web Api Start, data:{syncModel.ToJsonString()}");                 result = work();                 if (!result.Success && !string.IsNullOrEmpty(result.Code) && string.IsNullOrEmpty(result.ErrorMessage))                 {                     result.ErrorMessage = ApiResultCode.ErrorMessages[result.Code];                 }             }             catch (Exception ex)             {                 _logger.Error(ex.ToString());                 result.Success = false;                 if (string.IsNullOrEmpty(result.ErrorMessage))                 {                     result.ErrorMessage = ex.Message;                 }                 else                 {                     result.ErrorMessage += "; " + ex.Message;                 }             }             finally             {                 _logger.Info($"Call Web Api End , result:{result.ToJsonString()}");                  //更新 Db event                 syncModel.SetStatus(result.Success ? BQoolSyncEventStatus.Success : BQoolSyncEventStatus.Failure);                 _innerBQoolSyncEventLogService.ChangeStatus(syncModel.Id, syncModel.Status, result.ErrorMessage);             }              return result;         }

2、把方法当做参数,传入委托。

[HttpPost]         public ApiResult ModuleFeatureSetting(ReviewsApiRequestModel model)         {             string data = StringTools.AESDecrypt(model.Encrypt);             var param = JObject.Parse(data).ToObject<ModuleFeatureSettingParam>();              ApiResult result = HandleWork(                 new CreateBQoolSyncEventModel(param.Account, BQoolSyncEventType.ModuleFeatureSetting, param)                 , () => _ReviewsSettingSyncService.ModuleFeatureSetting(param));              return result;         }

3、查看日志。

如何使用Func<T, TResult> 委托实现API日志的记录

感谢你能够认真阅读完这篇文章,希望小编分享的“如何使用Func<T, TResult> 委托实现API日志的记录”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用Func<T, TResult> 委托实现API日志的记录

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用PHP进行日志记录?(PHP实现日志记录的方法有哪些?)

日志记录是应用程序开发中用于记录事件、错误和调试信息的至关重要的技术。PHP提供了多种日志记录方法,每种方法都有其独特的优势和劣势。文件日志记录:简单易用,但缺乏格式化和中央日志管理。数据库日志记录:提供高级格式化和查询功能,但需要数据库服务器。Syslog日志记录:将日志信息发送到系统日志守护程序,可以将日志信息集中到一个位置。第三方库:使用第三方库简化日志记录过程,提供丰富的功能,如格式化、过滤和远程日志记录。选择最合适的日志记录方法取决于应用程序的需求。对于简单的情况,文件日志记录可能足够;对于需要
如何使用PHP进行日志记录?(PHP实现日志记录的方法有哪些?)
2024-04-02

编程热搜

目录