Я не хочу вводить напрямую ключ приложения для регистрации журнала - PullRequest
0 голосов
/ 26 марта 2019

Я не хочу вводить ключ понимания приложения в Program.cs. Могу ли я напечатать его в каком-то файле конфигураций или в другом месте? Это ASP .Net Core

Я хочу включить регистр в информацию о моих журналах, но с изменениями. Теперь у меня есть регистр, но я набираю ключ в Program.cs и у меня возникает «проблема» при смене среды. Знаете ли вы какой-либо способ динамического ввода этого ключа в Program.cs или я могу сделать это объявление в другом месте программы.

Это Program.cs. Он начался с Main, а после запуска BuildWebHost, где я загружаю ключ идей приложений, и это то, что я хочу изменить:

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .ConfigureLogging(logging =>
        {
                logging.AddApplicationInsights("db0fe38d-c208-8ed7-23e4ef4479bb");

                // Optional: Apply filters to configure LogLevel Trace or above is sent to
                // ApplicationInsights for all categories.
                logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.Trace);

                // Additional filtering For category starting in "Microsoft",
                // only Warning or above will be sent to Application Insights.
                logging.AddFilter<ApplicationInsightsLoggerProvider>("Microsoft", LogLevel.Warning);
        }).Build();

Как я уже сказал, я бы не стал вводить ключ в Программе, и я хотел бы взять этот параметр из файла конфигурации или ввести это объявление в другом месте

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Просто добавьте UseApplicationInsights (), затем удалите инструментальный ключ (предположим, что инструментальный ключ установлен в appsettings.json).

Пример кода, как показано ниже, и хорошо работает на моей стороне:

        public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseApplicationInsights()  // add this line of code, and it will auto-read ikey from appsettings.json.
        .UseStartup<Startup>()
        .ConfigureLogging(logging =>
        {
            //then you can remove instrumentation key from here.
            logging.AddApplicationInsights();
            logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.Trace);


            logging.AddFilter<ApplicationInsightsLoggerProvider>("Microsoft", LogLevel.Warning);
        }).Build();
1 голос
/ 26 марта 2019

Поскольку это приложение ASP.NET Core, вы можете использовать метод расширения ConfigureLogging, который внедряет WebHostBuilderContext для получения вашей конфигурации:

 public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .ConfigureLogging((hostingContext, logging) =>
        {
                var appInsightKey =  hostingContext.Configuration["MyAppInsight"];
                logging.AddApplicationInsights(appInsightKey);

                // Optional: Apply filters to configure LogLevel Trace or above is sent to
                // ApplicationInsights for all categories.
                logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.Trace);

                // Additional filtering For category starting in "Microsoft",
                // only Warning or above will be sent to Application Insights.
                logging.AddFilter<ApplicationInsightsLoggerProvider>("Microsoft", LogLevel.Warning);
        }).Build();
...