因此,我一直在尝试找出在多个 API 中抛出错误时记录有效负载的方法。但问题是,我正在处理大量端点,手动记录每个端点并编写 try catch 充其量似乎是噩梦。
谢谢。
最佳答案
使用中间件在请求到达您的 Controller /操作 API 之前使用全局 try {//AI Log request info } catch {//AI Log error } 拦截请求
以.NET 4.5 Owin中间件为例:
public class LogGlobalErrorMiddleware : OwinMiddleware
{
private readonly OwinMiddleware _Next;
private readonly ILog _logger;
/// <summary>
/// Ctror
/// </summary>
/// <param name="next"></param>
/// <param name="healthCheck"></param>
public LogGlobalErrorMiddleware(OwinMiddleware next, ILog logger) : base(next)
{
this._Next = next;
this._logger = logger;
}
public async override Task Invoke(IOwinContext context)
{
await LogGlobalError(context);
}
/// <summary>
/// Middleware logic to log global errors in our microservice
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
private async Task LogGlobalError(IOwinContext context)
{
try
{
//Moving through pipeline
await Next.Invoke(context);
}
catch (Exception ex)
{
_logger.Error(ex, "An unhandled exception happened! ");
}
}
}
关于c# - 发生错误时,如何让 Azure Insights 记录入口方法(如果不是所有方法)的请求有效负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66819055/