打赏

CoreWebApi集成Exceptionless

参考博客

https://www.cnblogs.com/akaxb/p/7207827.html

一、 Exceptionlessr的安装部署

依乐祝,《ASP.NET Core免费开源分布式日志收集框架Exceptionless安装配置以及简单实用

  花儿笑弯了腰,《Self Host 使用Exceptionless实时监控程序运行日志服务

  平凡网客,《Exceptionless 本地部署

Edison Zhou 《基于Exceptionless实现分布式日志》

 

二、在项目(16安监webapi)中使用。

Nugget: WebApi项目引用包 Exceptionless.AspNetCore

 

代码: 两处   见28WebApi项目

1、StartUp类

      
//注意要把exceptionless的位置放最前面,之前放中间了,有个未知原因,就是记录不上异常。
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseExceptionless(Configuration); }

 2、LogFilterAttribute

 public class LogFilterAttribute : ActionFilterAttribute
    {
        public string RequestParametersString { get; set; }
        /// <summary>
        /// Action执行中
        /// </summary>
        /// <param name="actionExecutedContext"></param>
        public override void OnActionExecuting(ActionExecutingContext actionExecutedContext)
        {
            RequestParametersString = actionExecutedContext.ActionArguments.ToJson();
        }

        /// <summary>
        /// Action执行后
        /// </summary>
        /// <param name="actionExecutedContext"></param>
        public override void OnActionExecuted(ActionExecutedContext actionExecutedContext)
        {
            string url = GetAbsoluteUri(actionExecutedContext.HttpContext.Request);
            if (actionExecutedContext.Exception == null)
            {
                string logInfo = $"request info:{DateTime.Now}(ㄒoㄒ){url}(ㄒoㄒ){RequestParametersString}(ㄒoㄒ)";
                LogHelper.Write(logInfo, LogMessageEnum.Info);
            }
            else
            {
                string error = $"Exception:{DateTime.Now}(ㄒoㄒ){url}(ㄒoㄒ){RequestParametersString}(ㄒoㄒ){actionExecutedContext.Exception.Message}";
                LogHelper.Write(error, LogMessageEnum.Error);

                //Exceptionless
                actionExecutedContext.Exception.ToExceptionless().SetHttpContext(actionExecutedContext.HttpContext).SetMessage(RequestParametersString)
                    .Submit();
            }
        }

        private string GetAbsoluteUri(HttpRequest request)
        {
            return new StringBuilder()
                .Append(request.Scheme)
                .Append("://")
                .Append(request.Host)
                .Append(request.PathBase)
                .Append(request.Path)
                .ToString();
        }
    }

 配置文件: 固定格式  在对应环境的配置文件中配置

 

格式:

"Exceptionless": {

    "ApiKey": "qBkC0YAL0YkjOhHsdvdgasdfsIwywAs48UK9KWZh",

    "ServerUrl": "http://****** "

  }

ApiKey需替换

ApiKey是在系统中添加项目时生成的码。

 

 

三、查看错误日志

1、登录系统后主要用前三个模块。首页仪表盘包含其他两个的功能。

2、开发测试过程中可以优先查看Most Frequent频次最高的错误进行修改。解决完的错误可以删除掉,省得碍事。

3、上线运维时常用Most Recent 最近发生的。

 

4、我们将http请示参数等都会记录在错误信息中。便于调试。在点开错误信息时,也许参数过多,出现截断情况。此时可以点击request,ToggleView,查看所有信息。点击复制按钮将参数复制到记事本中简单编辑下即可。

 

posted @ 2018-06-13 16:59  KiteRunner1988  阅读(...)  评论(...编辑  收藏