Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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());
        }
Esempio n. 4
0
        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());
        }