/// <summary> /// A generic version of the Factory method to create directory source /// </summary> /// <typeparam name="TData">Parser output type</typeparam> /// <typeparam name="TLogContext">Log context</typeparam> /// <param name="context">Plug-in Context</param> /// <param name="recordParser">Record Parser</param> /// <returns>Event Source</returns> public static IEventSource <TData> CreateEventSource <TData, TLogContext>( IPlugInContext context, IRecordParser <TData, TLogContext> recordParser ) where TLogContext : LogContext, new() { IConfiguration config = context.Configuration; GetDirectorySourceParameters(config, out string directory, out string filter, out int interval); DirectorySource <TData, TLogContext> source = new DirectorySource <TData, TLogContext>( directory, filter, interval * 1000, //milliseconds context, recordParser); source.NumberOfConsecutiveIOExceptionsToLogError = 3; EventSource <TData> .LoadCommonSourceConfig(config, source); source.Id = config[ConfigConstants.ID] ?? Guid.NewGuid().ToString(); return(source); }
public static IEventSource <TData> CreateEventSource <TData, TContext>( IPlugInContext context, IRecordParser <TData, TContext> recordParser, Func <string, long, TContext> logSourceInfoFactory ) where TContext : LogContext { IConfiguration config = context.Configuration; string directory = config["Directory"]; string filter = config["FileNameFilter"]; string intervalSetting = config["Interval"]; int interval = 0; //Seconds if (!string.IsNullOrEmpty(intervalSetting)) { int.TryParse(intervalSetting, out interval); } if (interval == 0) { interval = 1; } DirectorySource <TData, TContext> source = new DirectorySource <TData, TContext>( directory, filter, interval * 1000, //milliseconds context, recordParser, logSourceInfoFactory); source.NumberOfConsecutiveIOExceptionsToLogError = 3; EventSource <TData> .LoadCommonSourceConfig(config, source); source.Id = config[ConfigConstants.ID] ?? Guid.NewGuid().ToString(); return(source); }