public BsonDocument CreateBsonDocument(LogEventInfo logEvent)
        {
            var document = new BsonDocument();

            //基础信息
            if (IncloudBaseInfo && logEvent != null)
            {
                document.Add("TimeStamp", logEvent.TimeStamp);
                document.Add("Level", logEvent.Level.Name);
                document.Add("Message", logEvent.FormattedMessage);
                document.Add("LoggerName", logEvent.LoggerName);
            }
            ;

            //自定义字段
            if (IncloudCustomFields && CustomFields.Any())
            {
                foreach (var field in CustomFields)
                {
                    var bsonValue = GetBsonValueWithField(logEvent, field);
                    if (bsonValue == null)
                    {
                        continue;
                    }

                    document.Add(field.Name, bsonValue);
                }
            }

            //事件属性
            if (IncloudEventProperties && logEvent.HasProperties)
            {
                foreach (var property in logEvent.Properties)
                {
                    var propertyKey   = property.Key.ToString();
                    var propertyValue = property.Value.ToString();
                    if (IgnoredEventProperties.Contains(propertyKey) || document.Contains(propertyKey))
                    {
                        continue;
                    }

                    document.Add(propertyKey, propertyValue);
                }
            }

            //异常堆栈
            if (logEvent.Exception != null)
            {
                document.Add("Exception", new BsonDocument()
                {
                    { "Message", logEvent.Exception.Message },
                    { "Source", logEvent.Exception.Source },
                    { "StackTrace", logEvent.Exception.StackTrace.Trim() },
                });
            }

            return(document);
        }
Exemplo n.º 2
0
        public BsonDocument CreateBsonDocument(LogEventInfo logEvent)
        {
            var document = new BsonDocument();

            if (IncloudBaseInfo && logEvent != null)
            {
                document.Add("timestamp", logEvent.TimeStamp);
                document.Add("level", logEvent.Level.Name);
                document.Add("message", logEvent.FormattedMessage);
                document.Add("loggerName", logEvent.LoggerName);
            }
            ;

            if (IncloudCustomFields && CustomFields.Any())
            {
                foreach (var field in CustomFields)
                {
                    var bsonValue = GetBsonValueWithField(logEvent, field);
                    if (bsonValue != null)
                    {
                        document.Add(field.Name, bsonValue);
                    }
                }
            }

            if (logEvent.Exception != null)
            {
                document.Add("exception", logEvent.GetExceptionDocument());
            }

            //事件属性
            if (IncloudEventProperties && logEvent.HasProperties)
            {
                foreach (var property in logEvent.Properties)
                {
                    var propertyKey = property.Key.ToString();
                    if (IgnoredEventProperties.Contains(propertyKey))
                    {
                        continue;
                    }
                    if (document.Contains(propertyKey))
                    {
                        continue;
                    }

                    //document.Add(propertyKey,BsonValueConverter.);
                }
            }
            return(document);
        }
        public BsonDocument CreateBsonDocument(LogEvent logEvent)
        {
            var document = new BsonDocument();

            //基础信息
            if (IncloudBaseInfo && logEvent != null)
            {
                document.Add("TimeStamp", logEvent.Timestamp.DateTime);
                document.Add("Level", logEvent.Level);
                var message = logEvent.RenderMessage(_formatProvider);
                document.Add("Message", message);
                document.Add("LoggerName", string.Empty);
            }
            ;

            //事件属性
            if (IncloudEventProperties && logEvent.Properties.Count > 0)
            {
                foreach (var property in logEvent.Properties)
                {
                    var propertyKey   = property.Key.ToString();
                    var propertyValue = property.Value.ToString();
                    if (IgnoredEventProperties.Contains(propertyKey) || document.Contains(propertyKey))
                    {
                        continue;
                    }

                    document.Add(propertyKey, propertyValue);
                }
            }

            //异常堆栈
            if (logEvent.Exception != null)
            {
                document.Add("Exception", new BsonDocument()
                {
                    { "Message", logEvent.Exception.Message },
                    { "Source", logEvent.Exception.Source },
                    { "StackTrace", logEvent.Exception.StackTrace.Trim() },
                });
            }

            return(document);
        }