public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { if (formatter == null) { throw new ArgumentNullException(nameof(formatter)); } if (!IsEnabled(logLevel)) { return; } var message = new YadlMessage { Level = (int)logLevel, LevelDescription = GetLogDescription(logLevel), Message = formatter(state, exception), TimeStamp = DateTimeOffset.Now }; CompleteMessage(message); //Assume always gonna be true because it's unbounded channel _ = _processor.ChannelWriter.TryWrite(message); }
private void ProcessFields(YadlMessage message, IDictionary <string, object?> fields) { var actualJson = string.IsNullOrEmpty(message.ExtraFields) ? "{}" : message.ExtraFields; var fieldsAsJson = JsonSerializer.Serialize(fields, _options.JsonSerializerOptions); message.ExtraFields = JsonExtensions.Merge(actualJson, fieldsAsJson); }
private void CompleteMessage(YadlMessage message) { if (_options.GlobalFields.Count > 0) { ProcessFields(message, _options.GlobalFields); } var addFields = GetScopeAdditionalFields(); if (addFields.Count > 0) { ProcessFields(message, addFields); } }