public void EventHubLoggerDoesNotLogWithANonUkhoCategoryWhenLowerLogLevelPassed(LogLevel configLogLevel, LogLevel attemptedLogLevel) { var eventHubLogger = CreateTestEventHubLogger(configLogLevel, LogLevel.None, "NonUKHO.SomeNamespace.SomeClass", fakeEventHubLog); eventHubLogger.Log <object>(attemptedLogLevel, 0, null, null, null); A.CallTo(() => fakeEventHubLog.Log(A <LogEntry> .Ignored)).MustNotHaveHappened(); }
public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { (Dictionary <string, object> logProperties, string MessageTemplate) BuildLogProperties() { var result = new Dictionary <string, object> { { "_Environment", environment }, { "_System", system }, { "_Service", service }, { "_NodeName", nodeName }, { "_ComponentName", categoryName }, }; try { additionalValuesProvider(result); } catch (Exception e) { result["LoggingError"] = $"additionalValuesProvider throw exception: {e.Message}"; result["LoggingErrorException"] = e; } var messageTemplate = ""; if (state is IEnumerable <KeyValuePair <string, object> > structure) { foreach (var property in structure) { if (property.Key == OriginalFormatPropertyName && property.Value is string) { messageTemplate = (string)property.Value; } else { var propertyName = property.Key.StartsWith("@") ? property.Key.Substring(1) : property.Key; if (result.ContainsKey(propertyName)) { var existingValue = result[propertyName] as List <object> ?? new List <object>() { result[propertyName] }; existingValue.Add(property.Value); result[propertyName] = existingValue; } else { result.Add(propertyName, property.Value); } } } if (string.IsNullOrEmpty(messageTemplate)) { messageTemplate = formatter(state, exception); } } else { messageTemplate = formatter(state, exception); } return(result, messageTemplate); } if (!IsEnabled(logLevel)) { return; } var logProperties = BuildLogProperties(); var logEntry = new LogEntry { Exception = exception, EventId = eventId, Level = logLevel.ToString(), MessageTemplate = logProperties.MessageTemplate, Timestamp = DateTime.UtcNow, LogProperties = logProperties.logProperties }; eventHubLog.Log(logEntry); }