我想要一个共享的应用程序见解实例,该实例将保存来自运行中的不同微服务的所有日志。
我为他们每个人添加
services.AddLogging(
loggingBuilder =>
{
loggingBuilder
.SetMinimumLevel(settings.LogLevel)
.AddApplicationInsights();
}
);
但是,然后在azure门户中,我希望能够搜索单个应用程序的日志,例如使用“ applicationName ='MyAppName'”之类的查询。
是否可以将
loggingBuilder
设置为在此自定义属性applicationName
中添加为MyAppName
?记录本身就像
public void MyMethod()
{
try
{
//whatever
}
catch (Exception ex)
{
logger.LogError(ex, "Meaningful information");
}
}
还是共享应用程序见解实例并在一堆中提供所有日志和遥测信息,通常是个坏主意吗?
最佳答案
您可以使用ITelemetryInitializer设置角色名称
public class MyTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
{
//set custom role name here
telemetry.Context.Cloud.RoleName = "RoleName";
}
}
}
然后,如果其.net核心对其进行注册
services.AddSingleton<ITelemetryInitializer>(new MyTelemetryInitializer ());