Projekt

Obecné

Profil

Stáhnout (2.64 KB) Statistiky
| Větev: | Tag: | Revize:
1
using LDClient.utils.loggers;
2
using Microsoft.Extensions.Configuration;
3

    
4
namespace LDClient.utils {
5
    internal class ConfigLoader {
6
        private const string LoggingSection = "Logging";
7
        private const string NetworkSection = "Network";
8

    
9

    
10
        public int LogChunkSize { get; set; }
11
        public int LogChunkMaxCount { get; set; }
12
        public int LogArchiveMaxCount { get; set; }
13

    
14
        public int LogCleanupPeriod { get; set; }
15

    
16
        public LogVerbosity LogVerbosityType { get; set; } = LogVerbosity.Full;
17

    
18
        public LogFlow LogFlowType { get; set; } = LogFlow.Console;
19

    
20
        public string ApiBaseAddress { get; set; }
21
        public string ApiUsbEndPoint { get; set; }
22
        public uint ApiPort { get; set; }
23
        public uint ApiRetryPeriod { get; set; }
24

    
25
        public string DebuggerAddress { get; set; }
26
        public int DebuggerPort { get; set; }
27

    
28
        public ConfigLoader() {
29
            var configuration = new ConfigurationBuilder()
30
                .AddJsonFile("appsettings.json")
31
                .Build();
32
            ReadAllSettings(configuration);
33
        }
34

    
35
        private void ReadAllSettings(IConfigurationRoot configuration) {
36

    
37
            try {
38
                var logging = configuration.GetSection(LoggingSection);
39
                //TODO: Exception handling
40
                LogChunkSize = int.Parse(logging["LogChunkSize"]);
41
                LogChunkMaxCount = int.Parse(logging["LogChunkMaxCount"]);
42
                LogArchiveMaxCount = int.Parse(logging["LogArchiveMaxCount"]);
43
                LogCleanupPeriod = int.Parse(logging["LogCleanupPeriod"]);
44
                LogFlowType = (LogFlow)int.Parse(logging["LogFlowType"]);
45
                LogVerbosityType = (LogVerbosity)int.Parse(logging["LogVerbosityType"]);
46
                
47
                var network = configuration.GetSection(NetworkSection);
48
                ApiBaseAddress = network["ApiBaseAddress"];
49
                ApiUsbEndPoint = network["ApiLDEndPoint"];
50
                ApiPort = uint.Parse(network["ApiPort"]);
51
                ApiRetryPeriod = uint.Parse(network["ApiRetryPeriod"]);
52

    
53

    
54
                DebuggerAddress = network["DebuggerAddress"];
55
                DebuggerPort = int.Parse(network["DebuggerPort"]);
56

    
57
                Console.WriteLine("Configuration successfully loaded!");
58
            } catch (FormatException e) {
59
                //Console.WriteLine("Error reading app settings");
60
                //TODO: remove stacktrace print in production
61
                Console.WriteLine("Error during reading of configuration occurred!" + e);
62
                throw new IOException("Reading of configuration file failed! " + e);
63
            }
64
        }
65

    
66
    }
67
}
    (1-1/1)