private static void Configure(LoggerConfig config, IConfiguration configuration)
        {
            config = config ?? new LoggerConfig();
            var jsonLoggin = configuration.GetSection("JsonLogging").Get <LoggerConfig>();

            config.LogLevel            = jsonLoggin.LogLevel;
            config.IgnoreMicrosoftLogs = jsonLoggin.IgnoreMicrosoftLogs;
            config.IgnoreSystemNetLogs = jsonLoggin.IgnoreSystemNetLogs;
            config.UseFileLogger       = jsonLoggin.UseFileLogger;
            config.LogFilePath         = jsonLoggin.LogFilePath;
            config.ServiceName         = configuration.GetValue <string>(nameof(config.ServiceName)) ?? config.ServiceName;
            config.ServiceVersion      = configuration.GetValue <string>(nameof(config.ServiceVersion)) ?? config.ServiceVersion;

            var attributes = LoggerConfig.GetDefualtLayout();

            // если передавались поля для расширения лога, то добавляем их
            if (config.LogFields != null)
            {
                Mapper.Initialize(cfg =>
                {
                    cfg.CreateMap <JsonField, JsonAttribute>().ConvertUsing <JsonAttributeTypeConverter>();
                    cfg.CreateMap <JsonLayoutField, JsonLayout>();
                });
                var jsonAttributes = config.LogFields.Select(x => Mapper.Map <JsonField, JsonAttribute>(x));
                attributes.AddRange(jsonAttributes);
            }

            // добавляем все поля лога в JsonLayout и записываем в конфиг
            var jsonLayout = new JsonLayout();

            attributes.ForEach(x => jsonLayout.Attributes.Add(x));

            var consoleTarget = new ConsoleTarget("all_log")
            {
                Layout = jsonLayout
            };

            var fileTarget = new FileTarget("all_log_file")
            {
                Layout          = jsonLayout,
                Header          = "Log was created at ${longdate}${newline}",
                Footer          = "Log was archived at ${longdate}",
                FileName        = $"{config.LogFilePath}\\current.log",
                ArchiveFileName = $"{config.LogFilePath}\\archive\\archive_${{shortdate}}.{{##}}.log"
            };

            var nullTarget = new NullTarget("blackHole");

            // создаем конфиг NLog
            var nlogConfig = new LoggingConfiguration();

            // добавление переменных для NLog
            nlogConfig.Variables.Add(nameof(config.ServiceName), config.ServiceName);
            nlogConfig.Variables.Add(nameof(config.ServiceVersion), config.ServiceVersion);

            if (config.IgnoreMicrosoftLogs)
            {
                nlogConfig.AddRule(NLog.LogLevel.FromOrdinal((int)config.LogLevel), NLog.LogLevel.Off, nullTarget, "Microsoft.*", true);
            }
            if (config.IgnoreSystemNetLogs)
            {
                nlogConfig.AddRule(NLog.LogLevel.FromOrdinal((int)config.LogLevel), NLog.LogLevel.Off, nullTarget, "System.Net.*", true);
            }
            nlogConfig.AddRule(NLog.LogLevel.FromOrdinal((int)config.LogLevel), NLog.LogLevel.Off, consoleTarget);
            if (config.UseFileLogger)
            {
                nlogConfig.AddRule(NLog.LogLevel.FromOrdinal((int)config.LogLevel), NLog.LogLevel.Off, fileTarget);
            }

            nlogConfig.AddTarget(nullTarget);
            nlogConfig.AddTarget(consoleTarget);
            if (config.UseFileLogger)
            {
                nlogConfig.AddTarget(fileTarget);
            }

            LogManager.Configuration = nlogConfig;
        }