public virtual void Log(IRequest request, object requestDto, object response, TimeSpan requestDuration) { if (ShouldSkip(request, requestDto)) { return; } var requestType = requestDto?.GetType(); var entry = CreateEntry(request, requestDto, response, requestDuration, requestType); RequestLogFilter?.Invoke(request, entry); if (IgnoreFilter != null) { if (entry.RequestDto != null && IgnoreFilter(entry.RequestDto)) { entry.RequestDto = null; } if (entry.ResponseDto != null && IgnoreFilter(entry.ResponseDto)) { entry.ResponseDto = null; } if (entry.Session != null && IgnoreFilter(entry.Session)) { entry.Session = null; } if (entry.ErrorResponse != null && IgnoreFilter(entry.ErrorResponse)) { entry.ErrorResponse = null; } if (entry.ExceptionData != null) { List <object> keysToRemove = null; foreach (var key in entry.ExceptionData.Keys) { var val = entry.ExceptionData[key]; if (val != null && IgnoreFilter(val)) { keysToRemove ??= new List <object>(); keysToRemove.Add(key); } } keysToRemove?.Each(entry.ExceptionData.Remove); } } logEntries.Enqueue(entry); RequestLogEntry dummy; if (logEntries.Count > capacity) { logEntries.TryDequeue(out dummy); } }
public virtual void Log(IRequest request, object requestDto, object response, TimeSpan requestDuration) { if (ShouldSkip(request, requestDto)) { return; } var requestType = requestDto?.GetType(); var entry = CreateEntry(request, requestDto, response, requestDuration, requestType); RequestLogFilter?.Invoke(request, entry); logEntries.Enqueue(entry); RequestLogEntry dummy; if (logEntries.Count > capacity) { logEntries.TryDequeue(out dummy); } }
/// <summary> /// 启动计划任务 /// </summary> private async Task StartTask() { await WikiPassageService.StartViewsCountUpdateTask(); RequestLogFilter.StartIPsCount(); }