Exemple #1
0
 /// <summary>
 /// 格式化追踪到的消息
 /// </summary>
 /// <param name="outputTarget">输出目标</param>
 /// <param name="traceMessage">追踪的消息</param>
 /// <returns></returns>
 protected virtual string FormatTraceMessage(OutputTarget outputTarget, TraceMessage traceMessage)
 {
     if (outputTarget == OutputTarget.LoggerFactory)
     {
         return(traceMessage.ToExcludeException().ToString());
     }
     else
     {
         return(traceMessage.ToIndentedString(spaceCount: 4));
     }
 }
        /// <summary>
        /// 准备请求之前
        /// </summary>
        /// <param name="context">上下文</param>
        /// <returns></returns>
        public async override Task OnBeginRequestAsync(ApiActionContext context)
        {
            var message = new TraceMessage
            {
                RequestTime = DateTime.Now,
                HasRequest  = this.TraceRequest
            };

            if (this.TraceRequest == true)
            {
                var request = context.RequestMessage;
                message.RequestHeaders = request.GetHeadersString();
                if (request.Content != null)
                {
                    message.RequestContent = await request.Content.ReadAsStringAsync().ConfigureAwait(false);
                }
            }

            context.Tags.Set(tagKey, message);
        }
 /// <summary>
 /// 输出追踪到的消息
 /// </summary>
 /// <param name="context">上下文</param>
 /// <param name="traceMessage">追踪的消息</param>
 /// <returns></returns>
 protected abstract Task LogTraceMessageAsync(ApiActionContext context, TraceMessage traceMessage);
Exemple #4
0
        /// <summary>
        /// 写入LoggerFactory
        /// </summary>
        /// <param name="context">上下文</param>
        /// <param name="categoryName">日志容器名称</param>
        /// <param name="traceMessage">追踪的消息</param>
        private void WriteLoggerFactory(ApiActionContext context, string categoryName, TraceMessage traceMessage)
        {
            var logging = context.HttpApiConfig.LoggerFactory;

            if (logging == null)
            {
                return;
            }

            var logger  = logging.CreateLogger(categoryName);
            var message = this.FormatTraceMessage(OutputTarget.LoggerFactory, traceMessage);

            if (traceMessage.Exception == null)
            {
                logger.LogInformation(this.EventId, message);
            }
            else
            {
                logger.LogError(this.EventId, traceMessage.Exception, message);
            }
        }