• 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,查看所有信息。点击复制按钮将参数复制到记事本中简单编辑下即可。

     

  • 相关阅读:
    集合批量处理数据
    linux 后台立即输出日志(nohup)
    centos selenium chrome 中文显示为方框解决
    产生10个不同的随机数
    5个非常有意思的python代码,谁运行谁知道
    clickhouse rpm方式安装 running
    三门问题精解
    浮点数的迷思
    CSAPP读书笔记第二章
    新冠检测后面的数学原理
  • 原文地址:https://www.cnblogs.com/taoshengyujiu/p/9178684.html
Copyright © 2020-2023  润新知