public bool Load() { LoadedConfigurationFileName = "host-configuration.json"; LoadedConfigurationFileName = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), LoadedConfigurationFileName); if (!File.Exists(LoadedConfigurationFileName)) { Logger = SerilogConfigurator.CreateLogger(null); OpsLogger = SerilogConfigurator.CreateOpsLogger(null); IoLogger = SerilogConfigurator.CreateIoLogger(null); Logger.Write(LogEventLevel.Fatal, "can't find the host configuration file: {FileName}", LoadedConfigurationFileName); OpsLogger.Write(LogEventLevel.Fatal, "can't find the host configuration file: {FileName}", LoadedConfigurationFileName); return(false); } HostConfiguration = new HostConfiguration(); try { var configuration = new ConfigurationBuilder() .AddJsonFile(LoadedConfigurationFileName, false) .Build(); HostConfiguration.LoadFromConfiguration(configuration, "EtlHost"); } catch (Exception ex) { throw new ConfigurationFileException(PathHelpers.GetFriendlyPathName(LoadedConfigurationFileName), "can't read the configuration file", ex); } if (HostConfiguration.ModulesFolder.StartsWith(@".\", StringComparison.InvariantCultureIgnoreCase)) { HostConfiguration.ModulesFolder = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), HostConfiguration.ModulesFolder.Substring(2)); } if (!Directory.Exists(HostConfiguration.ModulesFolder)) { Logger.Write(LogEventLevel.Fatal, "can't find the specified modules folder: {ModulesFolder}", HostConfiguration.ModulesFolder); OpsLogger.Write(LogEventLevel.Fatal, "can't find the specified modules folder: {ModulesFolder}", HostConfiguration.ModulesFolder); return(false); } Logger = SerilogConfigurator.CreateLogger(HostConfiguration); OpsLogger = SerilogConfigurator.CreateOpsLogger(HostConfiguration); IoLogger = SerilogConfigurator.CreateIoLogger(HostConfiguration); return(true); }
public static ILogger CreateOpsLogger(HostConfiguration hostConfiguration) { var config = new LoggerConfiguration() .WriteTo.File(Path.Combine(OpsLogFolder, "2-info-.txt"), restrictedToMinimumLevel: LogEventLevel.Information, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitInfo ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8) .WriteTo.File(Path.Combine(OpsLogFolder, "3-warning-.txt"), restrictedToMinimumLevel: LogEventLevel.Warning, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitImportant ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8) .WriteTo.File(Path.Combine(OpsLogFolder, "4-error-.txt"), restrictedToMinimumLevel: LogEventLevel.Error, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitImportant ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8) .WriteTo.File(Path.Combine(OpsLogFolder, "5-fatal-.txt"), restrictedToMinimumLevel: LogEventLevel.Fatal, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitImportant ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8); config = config.MinimumLevel.Is(LogEventLevel.Information); return(config.CreateLogger()); }
public static ILogger CreateIoLogger(HostConfiguration hostConfiguration) { var config = new LoggerConfiguration() .WriteTo.File(Path.Combine(DevLogFolder, "io-.txt"), restrictedToMinimumLevel: hostConfiguration?.MinimumLogLevelIo ?? LogEventLevel.Verbose, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitLow ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8); config.WriteTo.Sink(new ConsoleSink("{Timestamp:HH:mm:ss.fff} [{Level}] {Message} {Properties}{NewLine}{Exception}"), hostConfiguration?.MinimumLogLevelOnConsole ?? LogEventLevel.Debug); config = config.MinimumLevel.Is(LogEventLevel.Verbose); if (hostConfiguration != null && !string.IsNullOrEmpty(hostConfiguration.SeqUrl) && hostConfiguration.SeqUrl != "-") { config = config.WriteTo.Seq(hostConfiguration.SeqUrl, apiKey: hostConfiguration.SeqApiKey); } return(config.CreateLogger()); }
public static ILogger CreateLogger(HostConfiguration hostConfiguration) { var config = new LoggerConfiguration() .WriteTo.File(new CompactJsonFormatter(), Path.Combine(DevLogFolder, "events-.json"), restrictedToMinimumLevel: hostConfiguration?.MinimumLogLevelInFile ?? LogEventLevel.Debug, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitInfo ?? int.MaxValue, rollingInterval: RollingInterval.Day, encoding: Encoding.UTF8) .WriteTo.File(Path.Combine(DevLogFolder, "2-info-.txt"), restrictedToMinimumLevel: LogEventLevel.Information, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitInfo ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8) .WriteTo.File(Path.Combine(DevLogFolder, "3-warning-.txt"), restrictedToMinimumLevel: LogEventLevel.Warning, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitImportant ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8) .WriteTo.File(Path.Combine(DevLogFolder, "4-error-.txt"), restrictedToMinimumLevel: LogEventLevel.Error, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitImportant ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8) .WriteTo.File(Path.Combine(DevLogFolder, "5-fatal-.txt"), restrictedToMinimumLevel: LogEventLevel.Fatal, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitImportant ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8); if ((hostConfiguration?.MinimumLogLevelInFile ?? LogEventLevel.Debug) <= LogEventLevel.Debug) { config.WriteTo.File(Path.Combine(DevLogFolder, "1-debug-.txt"), restrictedToMinimumLevel: LogEventLevel.Debug, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitLow ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8); } if ((hostConfiguration?.MinimumLogLevelInFile ?? LogEventLevel.Debug) <= LogEventLevel.Verbose) { config.WriteTo.File(Path.Combine(DevLogFolder, "0-verbose-.txt"), restrictedToMinimumLevel: LogEventLevel.Verbose, retainedFileCountLimit: hostConfiguration?.RetainedLogFileCountLimitLow ?? int.MaxValue, outputTemplate: "{Timestamp:HH:mm:ss.fff zzz} [{Level:u3}] {Message:l} {NewLine}{Exception}", rollingInterval: RollingInterval.Day, formatProvider: CultureInfo.InvariantCulture, encoding: Encoding.UTF8); } config.WriteTo.Sink(new ConsoleSink("{Timestamp:HH:mm:ss.fff} [{Level}] {Message} {Properties}{NewLine}{Exception}"), hostConfiguration?.MinimumLogLevelOnConsole ?? LogEventLevel.Debug); config = config.MinimumLevel.Is(System.Diagnostics.Debugger.IsAttached ? LogEventLevel.Verbose : LogEventLevel.Debug); if (hostConfiguration != null && !string.IsNullOrEmpty(hostConfiguration.SeqUrl) && hostConfiguration.SeqUrl != "-") { config = config.WriteTo.Seq(hostConfiguration.SeqUrl, apiKey: hostConfiguration.SeqApiKey); } return(config.CreateLogger()); }