Exemplo n.º 1
0
        public void OnFlush(FlushLogArgs args, ILogger logger)
        {
            if (FlushTrigger == FlushTrigger.OnFlush)
            {
                IEnumerable <LogMessage> logMessages = args.MessagesGroups.SelectMany(p => p.Messages).OrderBy(p => p.DateTime).ToList();
                string filePath = GetFileName(_logsDirectoryFullPath);

                lock (Locker)
                {
                    using (StreamWriter sw = System.IO.File.AppendText(filePath))
                    {
                        if (args.WebProperties != null)
                        {
                            sw.WriteLine(_textFormatter.FormatFlush(args.WebProperties));
                        }

                        foreach (var logMessage in logMessages)
                        {
                            sw.WriteLine(_textFormatter.FormatLogMessage(logMessage));
                        }
                    }
                }
            }
            else if (FlushTrigger == FlushTrigger.OnMessage)
            {
                string filePath = GetFileName(_logsDirectoryFullPath);

                lock (Locker)
                {
                    using (StreamWriter sw = System.IO.File.AppendText(filePath))
                    {
                        sw.WriteLine(_textFormatter.FormatEndRequest(args.WebProperties.Request, args.WebProperties.Response));
                    }
                }
            }
        }