Консольное приложение Журналы для хранения в Azure хранилище - PullRequest
0 голосов
/ 28 февраля 2020

Я использую консольное приложение, которое запускается на локальных серверах, запускаемых планировщиком задач. Это консольное приложение выполняет различные действия, и их необходимо зарегистрировать. Он будет генерировать журналы размером около 200 КБ за цикл, и консольное приложение будет запускаться каждый час.

Поскольку сервер недоступен для нас, я планирую хранить журналы на Azure. Я читал о хранилище блобов / таблиц.

Я хотел бы знать, какова наилучшая стратегия хранения журналов в Azure.

Спасибо.

1 Ответ

3 голосов
/ 28 февраля 2020

Хотя вы можете записывать данные журналов в Azure Хранилище (как BLOB-объектов, так и таблиц), на самом деле было бы более разумно, если вы используете Azure Application Insights для регистрации этих данных.

Я недавно сделал то же самое для консольного приложения, которое я создал. Я нашел это невероятно простым.

Я создал ресурс App Insight в своей подписке Azure и получил instrumentation key. Затем я установил App Insights SDK и сослался на соответствующие пространства имен в моем проекте.

using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;

Вот как я инициализировал клиента телеметрии:

                var appSettingsReader = new AppSettingsReader();
                var appInsightsInstrumentationKey = (string)appSettingsReader.GetValue("AppInsights.InstrumentationKey", typeof(string));

                TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
                configuration.InstrumentationKey = appInsightsInstrumentationKey;
                telemetryClient = new TelemetryClient(configuration);
                telemetryClient.InstrumentationKey = appInsightsInstrumentationKey;

Для трассировки журнала данные, я просто сделал следующее:

                            TraceTelemetry telemetry = new TraceTelemetry(message, SeverityLevel.Verbose);
                            telemetryClient.TrackTrace(telemetry);

Для регистрации данных об ошибках я просто сделал следующее:

            catch (Exception excep)
            {
                var message = string.Format("Error. {0}", excep.Message);
                ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(excep);
                telemetryClient.TrackException(exceptionTelemetry);

                telemetryClient.Flush();
                Task.Delay(5000).Wait();//Wait for 5 seconds before terminating the application
            }

Просто учтите одну вещь: убедитесь, что Вы ждете некоторое время (достаточно 5 секунд), чтобы передать sh данные, прежде чем завершать работу приложения.


Если вы по-прежнему заинтересованы в записи журналов в Azure Storage В зависимости от используемой библиотеки журналов вы найдете подходящие адаптеры, которые будут записываться непосредственно в Azure Storage.

Например, есть цель NLog для Azure Таблицы: https://github.com/harouny/NLog.Extensions.AzureTableStorage (хотя этот проект активно не поддерживается).

...