我有一个引发异常的 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) 我有一个使用应用程序洞察的 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