private static void Run(Options options) { try { LogReader reader = options.Type switch { LogType.S3 => new S3LogReader(), LogType.CloudFront => new CloudFrontLogReader(), _ => throw new ArgumentOutOfRangeException(nameof(options.Type), "Unrecognised log file type."), }; LogWriter writer = new FileLogWriter(options.OutputDirectory, options.OverwriteExistingFiles, options.GZip); LogMerger logMerger = new LogMerger(reader, writer, options.AddHeaders); logMerger.Merge(options.SourceDirectory, options.OutputPeriod); } catch (Exception e) { Console.Error.WriteLine(e.Message); Environment.Exit(2); } }
/// <summary> /// Initializes a new instance of the <see cref="LogMerger"/> class with the given reader and writer strategies. /// </summary> /// <param name="reader">The log reader strategy.</param> /// <param name="writer">The log writer strategy.</param> public LogMerger(LogReader reader, LogWriter writer, bool addHeaders) { _reader = reader; _writer = writer; _addHeaders = addHeaders; }