Example #1
0
 public string TraceLogCommandAction(string guid, DateTime dateTraitement, string codeappli, int codeerreur, string description)
 {
     if (OnlyHexInString(guid))
     {
         //test droit ecriture + ajout ligne si non présente + incrémente compteur
         string result = "RAS";
         result = VerifPresenceDate(guid);
         if (result == "OK")
         {
             codeappli   = ControleString(codeappli);
             description = ControleString(description);
             TraceLogModel myTraceLogModel = new TraceLogModel(guid, dateTraitement, codeappli, codeerreur, description);
             return("OK");
         }
         else if (result == "RELICA")
         {
             return("RELICA");
         }
         else
         {
             return("KO");
         }
     }
     else
     {
         return("KO");
     }
 }
Example #2
0
 public static TraceLog ToEntity(this TraceLogModel model, TraceLog destination)
 {
     return(model.MapTo(destination));
 }
Example #3
0
 public static TraceLog ToEntity(this TraceLogModel model)
 {
     return(model.MapTo <TraceLogModel, TraceLog>());
 }
        public async Task InvokeAsync(HttpContext context)
        {
            context.Items.Add(KeyName, Stopwatch.StartNew());

            var originalResponseStream = context.Response.Body;

            using (MemoryStream responseStream = new MemoryStream())
            {
                context.Response.Body = responseStream;

                await _next(context);

                var contextItem = context.Items.FirstOrDefault(a => a.Key.ToString() == KeyName);

                if (contextItem.Value != null)
                {
                    // 删除添加的信息,避免下次使用的时候,保存的还是上次的内容
                    context.Items.Remove(KeyName);

                    var stopWatch = contextItem.Value as Stopwatch;

                    var requestPath = context.Request.Path.ToUriComponent();

                    var paramterStr = string.Empty;

                    if (context.Request.Method == "GET")
                    {
                        paramterStr = context.Request.QueryString.ToString();
                    }

                    if (context.Request.Method == "POST")
                    {
                        context.Request.EnableBuffering();
                        context.Request.Body.Seek(0, SeekOrigin.Begin);
                        StreamReader requestStreamReader = new StreamReader(context.Request.Body);
                        paramterStr = await requestStreamReader.ReadToEndAsync();
                    }

                    context.Response.Body.Seek(0, SeekOrigin.Begin);
                    var responseStr = await new StreamReader(context.Response.Body).ReadToEndAsync();
                    context.Response.Body.Seek(0, SeekOrigin.Begin);
                    await context.Response.Body.CopyToAsync(originalResponseStream);

                    var clientIp = context.Connection.RemoteIpAddress.ToString();
                    stopWatch.Stop();
                    var traceLog = new TraceLogModel()
                    {
                        Method          = context.Request.Method,
                        ClientIp        = clientIp,
                        Url             = requestPath,
                        Parameter       = paramterStr,
                        ResponseContent = responseStr,
                        RequestDate     = DateTime.Now,
                        Type            = this.GetType().FullName,
                        HttpStatusCode  = context.Response.StatusCode,
                        ConsumeTime     = (int)stopWatch.ElapsedMilliseconds
                    };
                    _logger.LogInformation(JsonConvert.SerializeObject(traceLog));
                }
            }
        }