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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 启动计划任务
        /// </summary>
        private async Task StartTask()
        {
            await WikiPassageService.StartViewsCountUpdateTask();

            RequestLogFilter.StartIPsCount();
        }