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