ILogger 到 Application Insights
Posted
技术标签:
【中文标题】ILogger 到 Application Insights【英文标题】:ILogger to Application Insights 【发布时间】:2019-07-14 14:06:05 【问题描述】:将Microsoft.ApplicationInsights.AspNetCore v2.6.1
与.net core v2.2.2 一起使用,我可以在Azure Application Insight Live Metric Stream 中看到遥测数据,但我没有看到我尝试在@ 内使用ILogger
记录的条目987654323@ 或在控制器中。
我已经在Program.cs
和Startup.cs
中尝试过.UseApplicationInsights()
和WebHost.CreateDefaultBuilder
,就像这样,但无济于事。
services.AddApplicationInsightsTelemetry( options =>
options.EnableDebugLogger = true;
);
我看到传入请求和请求失败率,但没有日志条目
this.logger.Log(LogLevel.Error, $"Test Error Guid.NewGuid().ToString()");
this.logger.LogTrace($"Test Trace Guid.NewGuid().ToString()");
this.logger.LogInformation($"Test Information Guid.NewGuid().ToString()");
this.logger.LogWarning($"Test Warning Guid.NewGuid().ToString()");
this.logger.LogCritical($"Test Critical Guid.NewGuid().ToString()");
this.logger.LogError($"Test ErrorGuid.NewGuid().ToString()");
this.logger.LogDebug($"Test Debug Guid.NewGuid().ToString()");
【问题讨论】:
【参考方案1】:更新:
如果你安装了最新的包Microsoft.Extensions.Logging.ApplicationInsights
(2.9.1),你可以关注这个doc。
在program.cs中:
public class Program
public static void Main(string[] args)
CreateWebHostBuilder(args).Build().Run();
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(logging=>
logging.AddApplicationInsights("your_insturmentation_key");
logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.Trace); #you can set the logLevel here
);
然后在controller.cs中:
public class HomeController : Controller
ILogger<HomeController> Logger get; set;
TelemetryClient client = new TelemetryClient();
public HomeController(ILogger<HomeController> logger)
this.Logger = logger;
public IActionResult Index()
Logger.LogTrace("0225 ILogger: xxxxxxxxxxxxxxxxxxxxxxxxx");
Logger.LogDebug("0225 ILogger: debug from index page aa111");
Logger.LogInformation("0225 ILogger: infor from index page aa111");
Logger.LogWarning("0225 ILogger: warning from index page aa111");
Logger.Log(LogLevel.Error, "0225 ILogger: error from index page aa111");
return View();
# other code
测试结果(所有日志都发送到应用洞察):
【讨论】:
您是否知道 LogError 是否可以映射到 AppInsights 上的异常?编辑:找到我的答案here:如果您使用异常对象登录,它会映射到应用洞察力中的异常遥测。 @ivan-yang 是TelemetryClient client = new TelemetryClient();
必要的吗?
@urig,您能告诉我您使用的是哪种网络项目吗? .net core 2.2 还是其他?
@urig TelemetryClient client = new TelemetryClient();
不是必需的。实际上,不建议在 ASP.NET Core 应用程序中创建新的 TelemetryClient
实例。使用构造函数注入。
您是否必须指定您所做的检测密钥才能使其工作?我在配置中设置了它,Program.cs 只有AddApplicationInsights();
,TelemetryClient
工作(使用 DI),但ILogger
没有发送任何东西。以上是关于ILogger 到 Application Insights的主要内容,如果未能解决你的问题,请参考以下文章
从 Function App ILogger (C#) 在 Application Insights 中记录自定义对象
Application Insights - ILogger 参数呈现为自定义维度中的对象名称
在 Azure 函数 V2 中将 TraceWriter 替换为 ILogger
从自定义 ILogger 访问 LoggerFilterOptions