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