gpt4 book ai didi

.net - 排查 App Insight 仅显示部分日志的问题

转载 作者:行者123 更新时间:2023-12-03 03:29:49 25 4
gpt4 key购买 nike

我需要查看在 Azure 应用服务中运行的 .Net 应用程序的日志。

我在应用程序源代码中看到了许多我希望在 Application Insights 中看到的日志,但是,转到 Application Insights > 事务搜索(过去 24 小时内的所有数据)时,我只看到在部署应用程序的确切时间出现峰值.

我在 Application Insights 中看到的唯一日志是来自 Program.cs 的一些跟踪,而应用程序 Controller 和服务中的其他日志不可见。

以下是一些最少的代码,用于显示应用程序中的日志配置以及日志的使用:

public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.WebHost
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseNLog();
... // other stuff
app.Logger.LogInformation("Starting application..."); // Log that I see...
}

Controller 示例..

public class ProductsController : ControllerBase
{
private readonly ILogger<ProductsController> _logger;
public ProductsController(..., ILogger<ProductsController> logger)
{
... = ...;
_logger = logger;
}
[HttpGet("GuideProducts")]
public async Task<IActionResult> GetGuideProductDesplayAsync(CancellationToken ct = default)
{
_logger.LogInformation("Executing ...."); // Log I DON'T see
...
}
}

我只看到初始配置中的日志,而不是应用程序使用期间的日志,对于如何解决这个明显愚蠢的问题,我已经没有想法了。

最佳答案

检查以下步骤以从 Application Insights 中的 Controller 获取日志。

我的Program.cs

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddApplicationInsightsTelemetry(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"]);

var app = builder.Build();
app.Logger.LogInformation("Log from Program.cs");

if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

我的Controller.cs:


[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
_logger.LogInformation("Log Information - Controller.");
_logger.LogDebug("Debug Log - Controller.");
_logger.LogWarning("Log Warning - Controller.");
_logger.LogError("Log Error.");
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
We need to add

我们需要在 appsettings.json 文件中添加 Application Insights 设置。

我的appsettings.json

{
"Logging": {
"ApplicationInsights": {
"LogLevel": {
"Default": "Debug",
"Microsoft": "Error"
}
},
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},

"AllowedHosts": "*",
"ApplicationInsights": {
"ConnectionString": "Get the ApplicationInsights Connection String from Azure Portal - Access Keys"
}
}

我的 .csproj 文件中的包

 <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.15.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />

访问 URL 并执行 Controller 操作方法。

Application Insights 事务搜索中的跟踪

enter image description here

关于.net - 排查 App Insight 仅显示部分日志的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74945066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com