我有一个具有服务总线主题触发器的Azure函数。我注意到当函数无任何异常执行时,所有tracewriter.loginformation消息都会正确显示在应用程序见解中。但是如果发生任何异常,则appinsights中将显示夜间的log.information或log.error
我的功能正在消耗计划下运行。我注意到我有2个接球区。
catch(validation ex)
{
log.error;
}
catch(exception ex)
{
log.error;
throw;
}
第一个catch块中的所有错误均未记录,但第二个catch块中的所有错误均未记录。我注释掉了throw,它开始记录到appinsights。.但是我需要throw进行死信。请告知。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<Version>1.6.15</Version>
<DependsOnNETStandard>netstandard1.5</DependsOnNETStandard>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningsAsErrors />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="2.1.0-beta1" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Http" Version="1.0.0-beta1" />
<PackageReference Include="Microsoft.Azure.WebJobs.ServiceBus" Version="2.1.0-beta1" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.0-alpha6" />
<PackageReference Include="System.IO" Version="4.1.0" />
<PackageReference Include="System.Runtime" Version="4.1.0" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
<ItemGroup>
<Compile Update="TemplateResource.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>TemplateResource.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="TemplateResource.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>TemplateResource.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\PublishProfiles\" />
</ItemGroup>
</Project>
答案 0 :(得分:1)
我有一个类似的问题,因为log.Error
(“我的错误消息”)总是导致Application Insights中出现跟踪,而不是异常(这是我想要的)。检查了Application Insights SDK的源代码后,很明显,要在Application Insights中获取异常,必须将异常对象传递给 LogError 调用。
示例:
log.Error(ex, "my error message") - will result in Application Insight Exception
log.Error("my error message") - will result in Application Insight Trace
答案 1 :(得分:0)
我试图用您的版本对其进行复制,但它仍然对我有用。
try
{
if (new Random().NextDouble() > 0.5)
{
throw new ArgumentNullException("null");
}
throw new Exception("some exception");
}
catch (ArgumentNullException)
{
log.Error("null");
}
catch (Exception e)
{
log.Error("some exception");
throw;
}
我在Application Insights中看到“ null”和“某些异常”。
顺便说一句,已经有稳定的Microsoft.NET.Sdk.Functions 1.0.14,自1.0.0-alpha6起,它应该包含许多修复程序。