ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

asp.net 简单日志收集

2019-03-27 13:53:53  阅读:280  来源: 互联网

标签:asp void Current context new HttpContext net 日志


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

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

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

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,void,Current,context,new,HttpContext,net,日志
来源: https://www.cnblogs.com/jikhww/p/10606986.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有