public static ITomatoLogClient Create(TomatoLogSinkOptions options) { switch (options.FlowType) { case LogFlowTypes.Redis: { var eventOption = options.RedisOptions; if (eventOption == null) { throw new ArgumentNullException(nameof(eventOption)); } return(new TomatoLogClientRedis(eventOption)); } case LogFlowTypes.RabbitMq: { var eventOption = options.RabbitMqOptions; if (eventOption == null) { throw new ArgumentNullException(nameof(eventOption)); } return(new TomatoLogClientRabbitMQ(eventOption)); } case LogFlowTypes.Kafka: { var eventOption = options.KafkaOptions; if (eventOption == null) { throw new ArgumentNullException(nameof(eventOption)); } return(new TomatoLogClientKafka(eventOption)); } default: throw new InvalidOperationException("Unknown flow type."); } }
/// <summary> /// Create a new instance of <see cref="TomatoLogPayloadClientProvider"/> /// </summary> /// <param name="settings"></param> /// <param name="loggingConfiguration"></param> public TomatoLogPayloadClientProvider(IOptions <TomatoLogSinkOptions> settings, LoggingConfiguration loggingConfiguration) { _sinkOptions = settings == null ? new TomatoLogSinkOptions() : settings.Value; _loggingConfiguration = loggingConfiguration ?? throw new ArgumentNullException(nameof(loggingConfiguration)); }