做开发的都知道,完整的日志记录对问题的解决,回溯是多么的重要,多么的不可缺少。

那么我们怎么记录完整的日志?

今天,我们来说一说问题:从哪里开始记录呢?在哪里保存呢?

IHttpModule,这个大家用到过没有?,我想绝大部分同学都用到过的,

不了解的看看wolfy 同学的 https://www.cnblogs.com/wolf-sun/p/4338970.html 主要是看看IHttpModule在请求处理过程中的执行位置,以及BeginRequest ReleaseRequestState的执行时间点;

IHttpModule里面有一个Init方法,需要我们写几行代码

public void Init(HttpApplication context)
{
  context.BeginRequest += new EventHandler(OnBeginRequest);
  context.ReleaseRequestState += new EventHandler(OnReleaseRequestState);
  context.Error += new EventHandler(OnError);
}

context.BeginRequest:请求开始第一个触发事件

context.ReleaseRequestState:请求结束前的最后一个触发事件,这个事件里面可以访问到httpcontext

context.Error:发生系统错误时触发,如403,404

搞明白前面几个时间的触发点,接下来就是声明一个日志对象了

public void OnBeginRequest(Object source, EventArgs e)
{
  var logItem = new Log()
{
          //请求完整的url
ActionUrl = HttpContext.Current.Request.RawUrl,
          //请求id
RequestID= SessionManager.RequestID,
          //客户端IP
ClientIP = HttpContext.Current.Request.UserHostAddress,
          //日志主体对象
         LogData = new StringBuilder(),        
};
      HttpContext.Current.Items["Log"] = LogItem; }

日志对象就算是创建好了,哪里需要写日志,就可以往LogData里面写入数据

接下来就是吧日志保存下来了,我是把日志存到数据里面的,方便查询嘛

public void OnReleaseRequestState(Object source, EventArgs e)
{
var logitem = (Log)HttpContext.Current.Items["log"];
LogBiz.GetInstance().SaveLog(logitem);
}

希望我的做法能够给你带来灵感

asp.net 简单日志收集的更多相关文章

  1. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  2. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  3. 【转】asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  4. 一套标准的ASP.NET Core容器化应用日志收集分析方案

    讲故事 关注我公众号的朋友,应该知道我写了一些云原生应用收集和分析相关的文章,其中内容大多聚焦某个具体的组件: 超级有用的TraceId,快点用起来吧! 如何利用NLog输出结构化日志,并在Kiban ...

  5. NET Core微服务之路:简单谈谈对ELK,Splunk,Exceptionless统一日志收集中心的心得体会

    前言 日志,一直以来都是开发人员和运维人员最关心的问题.开发人员可通过日志记录来协助问题定位,运维人员可通过日志发现系统隐患,故障等定位问题.如果你的系统中没有日志,就像一个断了线的风筝,你永远不知道 ...

  6. 开源日志收集Exceptionless简单使用

    这两天在研究一个开源的日志收集工具Exceptionless 官网地址:https://exceptionless.com/GitHub地址:https://github.com/exceptionl ...

  7. 用ELK搭建简单的日志收集分析系统【转】

    缘起 在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素. 搭建一个日志系统 搭建一个日志系统需要考虑一下 ...

  8. ExceptionLess异常日志收集框架-1

    哈哈,中秋和代码更配哦,不知不觉一年过半了,祝园友们中秋快乐 前一阵子在博客园看到了一篇博文 http://www.cnblogs.com/savorboard/p/exceptionless.htm ...

  9. 日志收集框架 Exceptionless

    日志收集框架 Exceptionless 前言 从去年就答应过Eric(Exceptionless的作者之一),在中国会帮助给 Exceptionless 做推广,但是由于各种原因一直没有做这件事情, ...

  10. .NET Exceptionless 日志收集框架本地环境搭建

    一.简介 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF,Console,MVC 等 ...

随机推荐

  1. JavaScript – Async Iterator & Generator

    前言 要看懂这篇请先看下面几篇 JavaScript – Iterator JavaScript – Generator Function JavaScript – Promise JavaScrip ...

  2. js 翻译 c# 注意事项

    1. split('') 在 c# 是不可以 .Split("") 的 要写 ToCharArray() 更新: 2021-09-25, split('') 是不好的写法, es6 ...

  3. Spring —— bean配置

    基础配置      别名配置    作用范围配置      适合交给容器进行管理的bean   (复用性的对象,无需重复创建的对象) 表现层对象 业务层对象 数据层对象 工具对象   不适合交给容器管 ...

  4. 采集数据产品描述有超链接///设置免运费后,达到免送标准,其他运费不显示///给产品详情页面的图片点击放大是个模态窗///在shop页面有重复的产品展示,去重

    //产品描述有超链接,去掉 function remove_product_hyperlinks($content) { if (is_product()) { // 确保只在产品页面上应用 $con ...

  5. RTPS代理与转发服务

    Proxy介绍 利用libevent实现网络连接和线程池.通过tcp连接的方式实现rtsp消息转发,再通过udp连接进行rtp与rtcp转发.报文解析使用到了Qt库.请尽量使用qmake进行编译.源码 ...

  6. Go 语言中值接收者和指针接收者方法调用的自动转换规则详解

    在 Go 语言中,方法的调用规则对于值接收者和指针接收者有一些特别的行为,这使得代码变得更加简洁和易用.我们来详细解释一下"方法值调用规则"和"方法表达式调用规则&quo ...

  7. linux中backport printk和front printk的区别

    在Linux内核中,"backport printk"和"front printk"都是用于记录内核消息和调试信息的机制,但它们的工作方式和使用场景有一些区别. ...

  8. 使用DeepKE训练命名实体识别模型DEMO(官方DEMO)

    使用DeepKE训练命名实体识别模型DEMO(官方DEMO) 说明: 首次发表日期:2024-10-10 DeepKE资源: 文档: https://www.zjukg.org/DeepKE/ 网站: ...

  9. iOS本地化NSLocalizedString的使用小结

    在iOS设备,包括iPhone和iPad是全球可用.显然,iOS用户都来自不同国家,说着不同的语言.为了提供出色的用户体验,你可能希望以多种语言提供您的应用程序.适应应用程序以支持特定语言的过程通常被 ...

  10. iOS动画之CABasicAnimation的使用方法(移动,旋转,缩放)

    设定动画CABasicAnimation的属性和说明 属性 说明  duration 动画的时间 repeatCount 重复的次数.不停重复设置为 HUGE_VALF repeatDuration ...