要记录诸如错误,信息,警告之类的信息,我们使用log4NET库并记录在本地文件中。但是,我们的新要求以及文件需要将这些信息记录到Azure Application Insights中。
我们正在使用.NET C#库,
.NET C#Project是否真的需要ApplicationInsights.config文件?如果不是,那么解决此问题的最佳方法是什么。
是否缓存applicationInsights.config instrumentKey?如果是,那么解决方案是什么?
方案1:尝试不添加ApplicationInsights.config文件 输出:Log4Net日志未添加到Azure Application Insights中
方案2:尝试添加ApplicationInsights.config文件 输出:Log4Net日志即将到来
场景3:当我为ApplicationInsights.Log4NetAppender添加Nuget API时,它将创建log4Net部分并包含AIAppender。我们有单独的log4Net.config,并且只有File Appender。我们只想使用log4Net.config并从App.Config文件中删除log4net部分。 输出:我从App.Config中删除了log4Net部分,并将其添加到log4Net.config中并进行了测试,但是未在Application Insights中添加日志。
方案4:Application Insights中将通过C#代码和ApplicationInsights.config日志实现TelemetryClient。
TelemetryClient telemetryClient =新的TelemetryClient(); telemetryClient.InstrumentKey =;
//要测试 telemetryClient.TrackTrace(“通过代码测试”);
答案 0 :(得分:0)
Application Insights 的配置可以通过配置文件和代码的任意组合来完成:只有一个,或另一个,或两者兼而有之。
如果您在项目中找到 ApplicationInsights.config
文件,它很可能是通过安装 Application Insights (AI) Nuget 包之一创建的,但您可以将其删除并通过代码进行相同的配置。>
为了允许通过配置文件和代码混合配置,AI 客户端和配置类具有 GetDefault()
或 Active
静态成员,可以访问可全局使用的对象。例如,您可以看到 Log4Net appender TelemetryClient.cs
使用主动遥测配置:
public TelemetryClient() : this(TelemetryConfiguration.Active)
如果您查看 TelemetryConfiguration.Active 的文档,您会看到:
<块引用>获取从 ApplicationInsights.config 文件加载的活动 TelemetryConfiguration 实例。如果配置文件不存在,则使用将遥测数据发送到 Application Insights 所需的最低默认值初始化活动配置实例。
注意:根据平台的不同,情况会有所不同。例如在 .NET Core 中更建议使用依赖注入。在 Code-base monitoring 下查看您的案例。
例如,如果您有这样的配置文件:
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<InstrumentationKey>exxxxxxe-axxf-4xx6-bxx2-7xxxxxxxxxx3</InstrumentationKey>
这将从它获取检测密钥:
_configuration = TelemetryConfiguration.CreateDefault();
如果您删除配置文件,这不会失败,但您需要在代码中设置检测键:
_configuration.InstrumentationKey = "exxxxxxe-axxf-4xx6-bxx2-7xxxxxxxxxx3";
如果您的配置文件包含初始化程序、模块或其他任何内容,您也可以通过代码配置它们。例如:
<TelemetryInitializers>
<Add Type="...MyInitializer, ..." />
</TelemetryInitializers>
可以用这样的代码设置:
_configuration.TelemetryInitializers.Add(new MyInitializer(...));