/// <summary> /// see IEventStoreConnector for documentation /// </summary> /// <param name="evt"></param> /// <returns></returns> public Guid Submit(LogEvent evt,EventOptions options=null) { var s = JsonConvert.SerializeObject(evt, Formatting.Indented, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Serialize }); var logger = getLogger(evt); var nLogLevel = getLogLevel(evt); if (!logger.IsEnabled(nLogLevel)) return evt.UUID; logger.Log((LogEventInfo)mapper(evt, nLogLevel)); return evt.UUID; }
/// <summary> /// Writes a hydrated event to configured event store /// </summary> /// <param name="evt">Event to persist to logger's event store</param> public void Write(LogEvent evt) { _loggerConfig.EventStoreConnector.Submit(evt); }
private LogLevel getLogLevel(LogEvent evt) { switch (evt.EventType) { case TraceEventType.Critical: return LogLevel.Fatal; case TraceEventType.Error: return LogLevel.Error; case TraceEventType.Warning: return LogLevel.Warn; case TraceEventType.Information: return LogLevel.Info; case TraceEventType.Verbose: return LogLevel.Trace; case TraceEventType.Start: return LogLevel.Debug; case TraceEventType.Stop: return LogLevel.Debug; case TraceEventType.Resume: return LogLevel.Debug; case TraceEventType.Suspend: return LogLevel.Debug; case TraceEventType.Transfer: return LogLevel.Debug; } return LogLevel.Off; }
private LogEventInfo mapper(LogEvent evt, LogLevel nLogLevel) { var retVal = new LogEventInfo(nLogLevel, evt.EventSource, evt.Message); retVal.TimeStamp = evt.TimeStamp; retVal.Properties.Add("TimeStamp", evt.TimeStamp); retVal.Properties.Add("Message", evt.Message); retVal.Properties.Add("UUID", evt.UUID); retVal.Properties.Add("Application", evt.Application); retVal.Properties.Add("Module", evt.Module); retVal.Properties.Add("Environment", evt.Environment); retVal.Properties.Add("Host", evt.Host); retVal.Properties.Add("EventSource", evt.EventSource); retVal.Properties.Add("EventType", evt.EventTypeName); retVal.Properties.Add("EventTypeId", (int)evt.EventType); retVal.Properties.Add("Priority", evt.PriorityName); retVal.Properties.Add("PriorityId", (int)evt.Priority); if (!string.IsNullOrWhiteSpace(evt.User)) retVal.Properties.Add("User", evt.User); if (!string.IsNullOrWhiteSpace(evt.EventCode)) retVal.Properties.Add("EventCode", evt.EventCode); retVal.Properties.Add("EventId", evt.EventId); if (evt.Exceptions != null && evt.Exceptions.Count > 0) { for (int exceptionIndex = 0; exceptionIndex < evt.Exceptions.Count; exceptionIndex++) { expandException(evt.Exceptions[exceptionIndex], exceptionIndex, retVal.Properties); } } evt.Properties.ForEach(e => retVal.Properties.Add(string.Format("{0}.{1}", e.Group, e.Name), e.Value)); return retVal; }
private string getLoggerName(LogEvent evt) { if (!string.IsNullOrWhiteSpace(evt.EventSource)) return evt.EventSource; if (!string.IsNullOrWhiteSpace(evt.Application)) return evt.Application; return "default"; }
private ILoggerBase getLogger(LogEvent evt) { var loggerName = getLoggerName(evt); if (_nlogInstances.ContainsKey(loggerName)) { return _nlogInstances[loggerName]; } lock (listLock) { if (_nlogInstances.ContainsKey(loggerName)) { return _nlogInstances[loggerName]; } var nLogger = LogManager.GetLogger(loggerName); _nlogInstances[loggerName] = nLogger; return nLogger; } }
public void Enqueue(LogEvent evt) { _queue.TryAdd(evt, Timeout.Infinite, _cancelToken.Token); }
private void writeEvent(LogEvent evt) { _options.EventStoreConnector.Submit(evt); }
/// <summary> /// Low level method to convert internal LogEventBuilder data into standard /// LogEvent the client can use. Similar in concept to log4Net.Fix() /// </summary> /// <returns></returns> public LogEvent ConvertToEvent() { var retVal = new LogEvent(); retVal.Application = this.applicationKey ?? Config.ApplicationName; retVal.Module = this._appSubKey ?? Config.ApplicationModule; retVal.TimeStamp = this.timeStamp; retVal.EventSource = this.loggerName; retVal.EventType = this.severity; retVal.Host = this.Config.HostName; if (!string.IsNullOrWhiteSpace(_messageText)) { retVal.Message = _messageText; } else { if (_exceptions != null && _exceptions.Count > 0 && _exceptions[0] != null) { retVal.Message = _exceptions[0].BaseException.Message; } }; retVal.User = (_userContext != null) ? _userContext.DefaultUser : "******"; retVal.Environment = this.Config.ActiveEnvironment; if (this.priority == default(LogEventPriority)) { retVal.Priority = retVal.EventType.ToPriority(); } if (this._eventId == 0) { retVal.EventId = (int)retVal.Priority + (int)retVal.EventType; } retVal.UUID = this.UUID; if (this._exceptions != null && this._exceptions.Count > 0) { retVal.Exceptions = new List<LogException>(); retVal.Exceptions.AddRange(this._exceptions); } if (!string.IsNullOrWhiteSpace(this.applicationSubKey)) { retVal.Properties.Add(new LogEventProperty() { Group = "General", Name = "SubKey", Value = this.applicationSubKey }); } retVal.Properties.Add(new LogEventProperty() { Group = "General", Name = "ActivityId", Value = this.activityId.ToString() }); if (this._reference != null) { retVal.Properties.Add(new LogEventProperty() { Group = "General", Name = "Reference", Value = JsonConvert.SerializeObject(this._reference, Formatting.Indented) }); } if (this.properties != null && this.properties.Count > 0) { foreach (var prop in this.properties) { retVal.Properties.Add(new LogEventProperty() { Group = "Properties", Name = prop.Key, Value = prop.Value }); } } if (this.httpContext != null) { convertToEvent(retVal.Properties, this.httpContext); } if (this.machineContext != null) { convertToEvent(retVal.Properties, this.machineContext); } if (_userContext != null) { convertToEvent(retVal.Properties, _userContext); } retVal.Properties.ForEach(p => { p.EventUUID = retVal.UUID; }); return retVal; }