Есть ли возможность включить / выключить функцию регистрации в ядре .net, особенно в serilog (запись данных в файл .txt) - PullRequest
1 голос
/ 17 апреля 2019

Я использую .net core 2.2 в примере проекта, реализовал LoggerFactory и Serilog (для получения журналов в файле .txt), и они работают нормально. Но есть ли способ, позволяющий мне включать и выключать ведение журнала, когда он мне динамически не нужен, без внесения каких-либо изменений в код и последующего развертывания на сервере.

Я внес необходимые изменения, чтобы запустить функцию ведения журнала, и она работает довольно хорошо, но теперь я хочу, чтобы моя система перестала регистрировать ошибки в файле .txt, когда я не хочу, чтобы он регистрировался. Значит, есть ли способ включить / выключить функцию ведения журнала.

В Startup.cs я добавил этот код для начала ведения журнала .txt:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
    loggerFactory.AddFile("Logs/log-{Date}.txt");
}

В контроллере с именем customer я создал экземпляр класса ILogger.

private ILogger _logger;
public CustomersController(ILogger < CustomersController > logger) {
    _logger = logger;
}

И в этой функции TimeTaken я использовал ее для регистрации времени, затраченного на вызов БД для выборки всех клиентов.

public JsonResult TimeTaken() {
    _logger.LogInformation("Controller Called");
    Stopwatch sw = new Stopwatch();
    sw.Start();
    var customers = new List < Customers > ();
    if (!_cache.TryGetValue("CustomersList", out customers)) {
        if (customers == null) {
            customers = _context.Customers.ToList();
        }
        var cacheEntryOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(5));
        _cache.Set("CustomersList", customers, cacheEntryOptions);
    }
    sw.Stop();
    var b = sw.ElapsedMilliseconds;
    _logger.LogInformation("Data execution took {0} miliseconds", b);
    return Json(b);
}

Эти коды работают нормально, просто хочу узнать, есть ли способ включить / выключить их функциональность по моей воле. Как вызвать API, чтобы остановить запись или что-то ??

1 Ответ

0 голосов
/ 17 апреля 2019

Файл конфигурации используется для изменения настроек приложения без необходимости перестраивать приложение.

Зная это, вот самый простой способ достичь того, что вы ищете:

  1. Установите флажок в вашем приложении Settings.json
  2. Считать значение флага из IConfiguration ( посмотреть, как это сделать )
  3. Включить ведение журнала в зависимости от значения флага (например, с окружением if loggerFactory.AddFile("Logs/log-{Date}.txt");

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...