/// <inheritdoc/> protected override (IFullLogger logger, IMockLogTarget mockTarget) GetLogger(LogLevel minimumLogLevel) { var logTarget = new InMemoryExceptionlessLogTarget(); var exceptionlessClient = new ExceptionlessClient(); exceptionlessClient.Configuration.ApiKey = "someapikey"; var exceptionlessMinLogLevel = _splat2Exceptionless[minimumLogLevel]; exceptionlessClient.Configuration.UseInMemoryLogger(exceptionlessMinLogLevel); exceptionlessClient.Configuration.SetDefaultMinLogLevel(exceptionlessMinLogLevel); exceptionlessClient.Configuration.AddPlugin("Use Mock Log Target Interceptor", context => PluginAction(context, logTarget)); var inner = new ExceptionlessSplatLogger(typeof(ExceptionlessLoggerTests), exceptionlessClient); return(new WrappingFullLogger(inner), logTarget); }
private static void PluginAction(EventPluginContext obj, InMemoryExceptionlessLogTarget logTarget) { obj.Cancel = true; if (!obj.Event.Type.Equals(Event.KnownTypes.Log, StringComparison.Ordinal)) { return; } var level = obj.Event.Data.GetValueOrDefault(Event.KnownDataKeys.Level) as string; var logLevel = global::Exceptionless.Logging.LogLevel.FromString(level); var splatLogLevel = GetSplatLogLevel(logLevel); var exception = obj.ContextData.HasException() ? obj.ContextData.GetException() : null; var exceptionMessageSuffix = exception != null ? $" {exception}" : string.Empty; (LogLevel logLevel, string message)tuple = (splatLogLevel, $"{obj.Event.Message}{exceptionMessageSuffix}"); logTarget.Logs.Add(tuple); }