| | |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using System.Diagnostics; |
| | | using System.Text; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using Microsoft.AspNetCore.Mvc.Controllers; |
| | | using Microsoft.AspNetCore.Mvc.Filters; |
| | | using Newtonsoft.Json; |
| | | using System.Diagnostics; |
| | | using System.Text; |
| | | |
| | | namespace MESApplication; |
| | | |
| | |
| | | /// </summary> |
| | | public class ActionFilter : IActionFilter |
| | | { |
| | | private Stopwatch _stopwatch; |
| | | |
| | | /// <summary> |
| | | /// 监控日志 |
| | | /// </summary> |
| | |
| | | /// 错误日志 |
| | | /// </summary> |
| | | public static ILogger LoggerError { get; set; } |
| | | |
| | | private Stopwatch _stopwatch; |
| | | |
| | | /// <summary> |
| | | /// 创建请求日志文本 |
| | | /// </summary> |
| | | /// <param name="method"></param> |
| | | /// <param name="controllerName"></param> |
| | | /// <param name="actionName"></param> |
| | | /// <param name="actionArgs"></param> |
| | | /// <returns></returns> |
| | | private static string CreateRequestLogText(string method, string controllerName, string actionName, |
| | | string requestHead, string requestBody) |
| | | { |
| | | var sb = new StringBuilder(); |
| | | sb.Append( |
| | | $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")} 请求{method}/{controllerName}/{actionName}接口,请求Head:{requestHead}\n"); |
| | | sb.Append( |
| | | $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")} 请求{method}/{controllerName}/{actionName}接口,请求Body:{requestBody}\n"); |
| | | return sb.ToString(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 创建响应日志文本 |
| | | /// </summary> |
| | | /// <param name="method"></param> |
| | | /// <param name="controllerName"></param> |
| | | /// <param name="actionName"></param> |
| | | /// <param name="result"></param> |
| | | /// <returns></returns> |
| | | private static string CreateResponseLogText(string method, string controllerName, string actionName, object result) |
| | | { |
| | | var sb = new StringBuilder(); |
| | | sb.Append( |
| | | $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")} 完成请求{method}/{controllerName}/{actionName}接口,返回结果:"); |
| | | if (result != null) |
| | | sb.Append($"{JsonConvert.SerializeObject(result)}"); |
| | | else |
| | | sb.Append($"无"); |
| | | return sb.ToString(); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | |
| | | var requestHeaders = context.HttpContext.Request.Headers; |
| | | |
| | | // 访问请求中的 header 信息 |
| | | foreach (var header in requestHeaders) headers.Add(header.Key, header.Value); |
| | | foreach (var header in requestHeaders) |
| | | headers.Add(header.Key, header.Value); |
| | | var requestHead = JsonConvert.SerializeObject(headers); |
| | | |
| | | Dictionary<string, object> bodys = new(); |
| | |
| | | { |
| | | //dic.Add(argument.Key, argument.Value); |
| | | var parameter = |
| | | JsonConvert.DeserializeObject<Dictionary<string, object>>(argument.Value.ToString()); |
| | | foreach (var item in parameter) bodys.Add(item.Key, item.Value); |
| | | JsonConvert |
| | | .DeserializeObject<Dictionary<string, object>>( |
| | | argument.Value.ToString()); |
| | | foreach (var item in parameter) |
| | | bodys.Add(item.Key, item.Value); |
| | | } |
| | | |
| | | var requestBody = JsonConvert.SerializeObject(bodys); |
| | | |
| | | var logText = CreateRequestLogText(context.HttpContext.Request.Method, desc.ControllerName, |
| | | var logText = CreateRequestLogText( |
| | | context.HttpContext.Request.Method, desc.ControllerName, |
| | | desc.ActionName, requestHead, requestBody); |
| | | //LoggerMonitor.LogDebug(logText); |
| | | //ErrorLog.Write(logText); |
| | |
| | | // 记录异常日志 |
| | | if (LoggerError != null) |
| | | { |
| | | LoggerError.LogError(context.Exception, context.Exception.Message); |
| | | LoggerError.LogError(context.Exception, |
| | | context.Exception.Message); |
| | | |
| | | ErrorLog.Write( |
| | | $@"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")} 接口异常:{JsonConvert.SerializeObject(context.Exception)}"); |
| | |
| | | // ErrorLog.Write(msg); |
| | | // ErrorLog.Write("=================================================================================================================================="); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 创建请求日志文本 |
| | | /// </summary> |
| | | /// <param name="method"></param> |
| | | /// <param name="controllerName"></param> |
| | | /// <param name="actionName"></param> |
| | | /// <param name="actionArgs"></param> |
| | | /// <returns></returns> |
| | | private static string CreateRequestLogText(string method, |
| | | string controllerName, string actionName, |
| | | string requestHead, string requestBody) |
| | | { |
| | | var sb = new StringBuilder(); |
| | | sb.Append( |
| | | $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")} 请求{method}/{controllerName}/{actionName}接口,请求Head:{requestHead}\n"); |
| | | sb.Append( |
| | | $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")} 请求{method}/{controllerName}/{actionName}接口,请求Body:{requestBody}\n"); |
| | | return sb.ToString(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 创建响应日志文本 |
| | | /// </summary> |
| | | /// <param name="method"></param> |
| | | /// <param name="controllerName"></param> |
| | | /// <param name="actionName"></param> |
| | | /// <param name="result"></param> |
| | | /// <returns></returns> |
| | | private static string CreateResponseLogText(string method, |
| | | string controllerName, string actionName, object result) |
| | | { |
| | | var sb = new StringBuilder(); |
| | | sb.Append( |
| | | $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")} 完成请求{method}/{controllerName}/{actionName}接口,返回结果:"); |
| | | if (result != null) |
| | | sb.Append($"{JsonConvert.SerializeObject(result)}"); |
| | | else |
| | | sb.Append("无"); |
| | | return sb.ToString(); |
| | | } |
| | | } |