Пример #1
0
        private LogEventInfo CreateLogEntry(
            string nlogLoggerName,
            Guid contextId,
            ContextSummary summary
            )
        {
            var level = NlogLogLevelUtil.ConvertFromMsLogLevel(summary.Level);

            var @event = new LogEventInfo(level, nlogLoggerName, summary.Message);

            summary.Data.ToList().ForEach(x => @event.Properties.Add(x.Key, x.Value));

            var timestamp = _memoryLogService.GetTimestamp(contextId);
            var logs      = _memoryLogService.GetMemoryLogsSince(timestamp);

            logs.AddRange(summary.Entries);

            var entries = logs
                          .OrderBy(e => e.Timestamp)
                          .Select(e => new
            {
                Timestamp   = e.Timestamp,
                Level       = NlogLogLevelUtil.ConvertFromMsLogLevel(e.LogLevel).ToString(),
                Message     = e.Message,
                ContextName = e.ContextName,
                ContextId   = e.ContextId,
                e.TimeElapsed
            });

            @event.Properties.Add("entries", entries);

            return(@event);
        }
Пример #2
0
        private void LogEntry(IActionContext context, ContextLogEntry entry)
        {
            _memoryLogService.GetPendingMemoryLogs();

            var prefix = _config.EntryLogNamePrefix ?? "entry_";
            var logger = LogManager.GetLogger(prefix + entry.ContextName);

            var level   = NlogLogLevelUtil.ConvertFromMsLogLevel(entry.LogLevel);
            var summary = ContextSummary.CreateFromContext(context);

            var e = new LogEventInfo(level, logger.Name, entry.Message);

            summary.Data.ToList().ForEach(x => e.Properties.Add(x.Key, x.Value));

            logger.Log(e);
            LogManager.Flush();
        }