private BsonDocument BuildBsonDocument(LogEventInfo logEvent) { var doc = Fields.Count == 0 || AppendFields ? logEvent.ToBsonDocument() : new BsonDocument(); if (UseCappedCollection && CreateIdField) { doc.AddField("_id", ObjectId.GenerateNewId()); } foreach (var field in Fields) { if (field.Layout != null) { var renderedField = field.Layout.Render(logEvent); if (!string.IsNullOrWhiteSpace(renderedField)) { doc[field.Name] = renderedField; } continue; } var searchResult = logEvent.GetValue(field.Name); if (!searchResult.Succeded) { throw new InvalidOperationException(string.Format("Invalid field name '{0}'.", field.Name)); } doc.AddField(field.Name, searchResult.Value); } return(doc); }
private BsonDocument BuildBsonDocument(LogEventInfo logEvent) { var doc = Fields.Count == 0 || AppendFields ? logEvent.ToBsonDocument() : new BsonDocument(); if (UseCappedCollection && CreateIdField) { doc.AddField("_id", ObjectId.GenerateNewId()); } foreach (var field in Fields) { if (field.Layout != null) { var renderedField = field.Layout.Render(logEvent); if (!string.IsNullOrWhiteSpace(renderedField)) { var bsonTypeValue = field.BsonType; if (!string.IsNullOrWhiteSpace(bsonTypeValue)) { const bool IgnoreCase = true; BsonType bsonType; if (Enum.TryParse(bsonTypeValue, IgnoreCase, out bsonType)) { var bsonValue = BsonTypeMapper.MapToBsonValue(renderedField, bsonType); doc[field.Name] = bsonValue; } else { var msg = "Unknown BsonType specified: " + bsonTypeValue; msg += ". Note that the type name must match enum names from the MongoDB.Bson.BsonType in the C# driver and do not necessarily match the MongoDB internal type names."; throw new InvalidOperationException(msg); } } else { doc[field.Name] = renderedField; } } continue; } var searchResult = logEvent.GetValue(field.Name); if (!searchResult.Succeded) { throw new InvalidOperationException(string.Format("Invalid field name '{0}'.", field.Name)); } doc.AddField(field.Name, searchResult.Value); } return(doc); }
private BsonDocument BuildBsonDocument(LogEventInfo logEvent) { var doc = Fields.Count == 0 || AppendFields ? logEvent.ToBsonDocument() : new BsonDocument(); if (UseCappedCollection && CreateIdField) doc.AddField("_id", ObjectId.GenerateNewId()); foreach (var field in Fields) { if (field.Layout != null) { var renderedField = field.Layout.Render(logEvent); if (!string.IsNullOrWhiteSpace(renderedField)) doc[field.Name] = renderedField; continue; } var searchResult = logEvent.GetValue(field.Name); if (!searchResult.Succeded) throw new InvalidOperationException(string.Format("Invalid field name '{0}'.", field.Name)); doc.AddField(field.Name, searchResult.Value); } return doc; }
private BsonDocument BuildBsonDocument(LogEventInfo logEvent) { var doc = Fields.Count == 0 || AppendFields ? logEvent.ToBsonDocument() : new BsonDocument(); if (UseCappedCollection && CreateIdField) doc.AddField("_id", ObjectId.GenerateNewId()); foreach (var field in Fields) { if (field.Layout != null) { var renderedField = field.Layout.Render(logEvent); if (!string.IsNullOrWhiteSpace(renderedField)) { var bsonTypeValue = field.BsonType; if (!string.IsNullOrWhiteSpace(bsonTypeValue)) { const bool IgnoreCase = true; BsonType bsonType; if (Enum.TryParse(bsonTypeValue, IgnoreCase, out bsonType)) { var bsonValue = BsonTypeMapper.MapToBsonValue(renderedField, bsonType); doc[field.Name] = bsonValue; } else { var msg = "Unknown BsonType specified: " + bsonTypeValue; msg += ". Note that the type name must match enum names from the MongoDB.Bson.BsonType in the C# driver and do not necessarily match the MongoDB internal type names."; throw new InvalidOperationException(msg); } } else { doc[field.Name] = renderedField; } } continue; } var searchResult = logEvent.GetValue(field.Name); if (!searchResult.Succeded) throw new InvalidOperationException(string.Format("Invalid field name '{0}'.", field.Name)); doc.AddField(field.Name, searchResult.Value); } return doc; }
/// <summary> /// Writes logging event to the log target. /// classes. /// </summary> /// <param name="logEvent">Logging event to be written out.</param> protected override void Write(LogEventInfo logEvent) { var document = logEvent.ToBsonDocument(UseFormattedMessage); _logRepository.InsertAsync(document).Wait(); }