小编ssc*_*oof的帖子

在应用程序洞察中获取异常消息

我有一个引发异常的 C# azure 函数:

[FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            throw new Exception("Helpful message");
        }
Run Code Online (Sandbox Code Playgroud)

异常被运行时捕获并重新抛出。在应用程序洞察中,这与消息Exception while executing function: Function1和调用堆栈一起记录。我无法在任何地方找到“有用的消息”。

在 Application Insights 中,我看到了这一点,并且没有一个属性具有“有用消息”文本: 异常的应用洞察

调用堆栈显示错误的位置:

Microsoft.Azure.WebJobs.Host.FunctionInvocationException:
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor+<ExecuteWithLoggingAsync>d__19.MoveNext (Microsoft.Azure.WebJobs.Host, Version=3.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35Microsoft.Azure.WebJobs.Host, Version=3.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.csMicrosoft.Azure.WebJobs.Host, Version=3.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: 321)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult (System.Private.CoreLib, …
Run Code Online (Sandbox Code Playgroud)

azure-functions

6
推荐指数
1
解决办法
4853
查看次数

如何在 ILogger 中刷新 Application Insights

我有一个使用应用程序洞察的 Windows 控制台应用程序。我使用Microsoft.Extensions.DependencyInjection来设置我的课程并添加ILogger.

如果出现异常,我想将此记录到 Application Insights。但是由于 Application Insights 不会立即发送跟踪,我想刷新日志。

有没有办法触发应用程序洞察的刷新ILogger

        static async Task Main(string[] args)
        {
            ServiceProvider serviceProvider = ConfigureServices();

            var program = serviceProvider.GetService<Program>();
            await program.Run();
        }

        public Program(ILogger<Program> logger)
        {
            this.logger = logger;
        }

        private static ServiceProvider ConfigureServices()
        {
            var services = new ServiceCollection();
            services
                .AddLogging(opt =>
                {
                    opt.AddConsole();
                    opt.AddApplicationInsights();
                })
                .AddTransient<Program>()
            return services.BuildServiceProvider();
        }

        public async Task Run()
        { 
            try
            {
                do.stuff()
            }
            catch (Exception e)
            {
                logger.LogError(e, "Exception occured");
                // How …
Run Code Online (Sandbox Code Playgroud)

c# console-application azure azure-application-insights .net-core

1
推荐指数
1
解决办法
1975
查看次数