@@ -248,6 +248,29 @@ public static IEnumerable<ILoggerProvider> CreateEventHubLoggerProviders(Depende
248248 return loggerProviders ;
249249 }
250250
251+ /// <summary>
252+ /// Creates logger providers for writing telemetry to local CSV files.
253+ /// </summary>
254+ /// <param name="logFileDirectory">The path to the directory where log files are written.</param>
255+ public static IEnumerable < ILoggerProvider > CreateCsvFileLoggerProviders ( string logFileDirectory )
256+ {
257+ logFileDirectory . ThrowIfNullOrWhiteSpace ( nameof ( logFileDirectory ) ) ;
258+
259+ // 20MB
260+ // General Sizing:
261+ // Around 34,400 metric records will fit inside of a single CSV file at 20MB.
262+ const long maxFileSizeBytes = 20000000 ;
263+
264+ List < ILoggerProvider > loggerProviders = new List < ILoggerProvider > ( ) ;
265+
266+ string metricsCsvFilePath = Path . Combine ( logFileDirectory , "metrics.csv" ) ;
267+ ILoggerProvider metricsCsvProvider = new MetricsCsvFileLoggerProvider ( metricsCsvFilePath , maxFileSizeBytes ) ;
268+ loggerProviders . Add ( metricsCsvProvider ) ;
269+ VirtualClientRuntime . CleanupTasks . Add ( new Action_ ( ( ) => metricsCsvProvider . Dispose ( ) ) ) ;
270+
271+ return loggerProviders ;
272+ }
273+
251274 /// <summary>
252275 /// Creates logger providers for writing telemetry to local log files.
253276 /// </summary>
@@ -295,30 +318,6 @@ public static ILoggerProvider CreateFileLoggerProvider(string logFilePath, TimeS
295318 return loggerProvider ;
296319 }
297320
298- /// <summary>
299- /// Creates logger providers for writing telemetry to local CSV files.
300- /// </summary>
301- /// <param name="csvFilePath">The full path for the log file (e.g. C:\users\any\VirtualClient\logs\metrics.csv).</param>
302- public static ILoggerProvider CreateCsvFileLoggerProvider ( string csvFilePath )
303- {
304- csvFilePath . ThrowIfNullOrWhiteSpace ( nameof ( csvFilePath ) ) ;
305-
306- // 20MB
307- // General Sizing:
308- // Around 34,400 metric records will fit inside of a single CSV file at 20MB.
309- const long maxFileSizeBytes = 20000000 ;
310-
311- ILoggerProvider loggerProvider = null ;
312-
313- if ( ! string . IsNullOrWhiteSpace ( csvFilePath ) )
314- {
315- loggerProvider = new MetricsCsvFileLoggerProvider ( csvFilePath , maxFileSizeBytes ) ;
316- VirtualClientRuntime . CleanupTasks . Add ( new Action_ ( ( ) => loggerProvider . Dispose ( ) ) ) ;
317- }
318-
319- return loggerProvider ;
320- }
321-
322321 /// <summary>
323322 /// Creates logger providers for writing telemetry to local log files.
324323 /// </summary>
@@ -356,24 +355,17 @@ public static IEnumerable<ILoggerProvider> CreateFileLoggerProviders(string logF
356355
357356 // Metrics/Results
358357 ILoggerProvider metricsLoggerProvider = DependencyFactory . CreateFileLoggerProvider (
359- Path . Combine ( logFileDirectory , settings . MetricsFileName ) ,
360- TimeSpan . FromSeconds ( 3 ) ,
358+ Path . Combine ( logFileDirectory , settings . MetricsFileName ) ,
359+ TimeSpan . FromSeconds ( 3 ) ,
361360 LogLevel . Trace ,
362361 new SerilogJsonTextFormatter ( propertiesToExcludeForMetrics ) ) . HandleMetrics ( ) ;
363362
364363 loggerProviders . Add ( metricsLoggerProvider ) ;
365364
366- // Metrics/Results in CSV Format
367- ILoggerProvider metricsCsvLoggerProvider = DependencyFactory . CreateCsvFileLoggerProvider (
368- Path . Combine ( logFileDirectory ,
369- settings . MetricsCsvFileName ) ) . HandleMetrics ( ) ;
370-
371- loggerProviders . Add ( metricsCsvLoggerProvider ) ;
372-
373365 // System Events
374366 ILoggerProvider eventsLoggerProvider = DependencyFactory . CreateFileLoggerProvider (
375- Path . Combine ( logFileDirectory , settings . EventsFileName ) ,
376- TimeSpan . FromSeconds ( 5 ) ,
367+ Path . Combine ( logFileDirectory , settings . EventsFileName ) ,
368+ TimeSpan . FromSeconds ( 5 ) ,
377369 LogLevel . Trace ,
378370 new SerilogJsonTextFormatter ( propertiesToExcludeForEvents ) ) . HandleSystemEvents ( ) ;
379371
0 commit comments