private void Log(LambdaLogLevel level, Exception exception, string format, params object[] args) { string message = RollbarClient.FormatMessage(format, args); Log(level, $"{message}", exception?.ToString()); if (level >= LambdaLogLevel.WARNING) { if (_rollbarEnabled) { try { Log(LambdaLogLevel.INFO, "rollbar sending data", extra: null); var result = _rollbarClient.SendAsync(level.ToString(), exception, format, args).Result; if (!result.IsSuccess) { Log(LambdaLogLevel.ERROR, $"Rollbar payload request failed. {result.Message}. UUID: {result.UUID}", extra: null); } } catch (Exception e) { Log(LambdaLogLevel.ERROR, "rollbar SendAsync exception", e.ToString()); } } else if (_loggingTopicArn != null) { string payload; try { // send exception to error-topic payload = _rollbarClient.CreatePayload(MAX_SNS_SIZE, level.ToString(), exception, format, args); } catch (Exception e) { Log(LambdaLogLevel.ERROR, "rollbar CreatePayload exception", e.ToString()); return; } try { // send exception to error-topic _snsClient.PublishAsync(new PublishRequest { TopicArn = _loggingTopicArn, Message = payload }).Wait(); } catch (Exception e) { Log(LambdaLogLevel.ERROR, "SNS publish exception", e.ToString()); Log(LambdaLogLevel.INFO, "logging payload", payload); } } } }
private void Log(LambdaLogLevel level, string message, string extra) => LambdaLogger.Log($"*** {level.ToString().ToUpperInvariant()}: {message} [{Stopwatch.Elapsed:c}]\n{extra}");