You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

旧版.NET Core Windows Service中App Insights与Serilog集成故障排查

.NET Core Windows Service 集成 Application Insights 日志排查与配置方案

一、保留Serilog与Application Insights集成的修正方案

  • 清理冗余NuGet包:旧版.NET Core Worker Service(Windows Service基于此框架)无需Microsoft.ApplicationInsights.AspNetCore,移除该包,仅保留Microsoft.ApplicationInsights.WorkerService和Serilog.Sinks.ApplicationInsights,避免包冲突导致日志发送失败。

  • 修正Program.cs初始化逻辑:确保Host正确关联Application Insights服务与Serilog,指定日志转换规则,示例代码:

    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    using Serilog;
    using Serilog.Sinks.ApplicationInsights.TelemetryConverters;
    
    var host = Host.CreateDefaultBuilder(args)
        .UseWindowsService() // 标记为Windows Service运行模式
        .ConfigureServices(services =>
        {
            // 注册Application Insights Worker服务
            services.AddApplicationInsightsTelemetryWorkerService();
        })
        .UseSerilog((context, services, config) => config
            .ReadFrom.Configuration(context.Configuration)
            .ReadFrom.Services(services)
            // 将Serilog日志转为Application Insights可识别的TraceTelemetry
            .WriteTo.ApplicationInsights(
                services.GetRequiredService<Microsoft.ApplicationInsights.TelemetryClient>(),
                new TraceTelemetryConverter()))
        .Build();
    
    await host.RunAsync();
    
  • 完善appsettings.json配置:添加Serilog日志级别配置,示例:

    {
      "ApplicationInsights": {
        "ConnectionString": "InstrumentationKey=<你的InstrumentationKey>;IngestionEndpoint=https://<你的区域>.applicationinsights.azure.com/"
      },
      "Serilog": {
        "MinimumLevel": {
          "Default": "Information",
          "Override": {
            "Microsoft": "Warning",
            "System": "Warning"
          }
        }
      }
    }
    

二、放弃Serilog,仅使用Application Insights的配置方案

  • 清理无关NuGet包:移除Serilog.Sinks.ApplicationInsights和Microsoft.ApplicationInsights.AspNetCore,仅保留Microsoft.ApplicationInsights.WorkerService。

  • 简化Program.cs配置:直接使用.NET内置日志系统关联Application Insights,示例代码:

    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    using Microsoft.Extensions.Logging;
    
    var host = Host.CreateDefaultBuilder(args)
        .UseWindowsService()
        .ConfigureServices(services =>
        {
            // 注册Application Insights Worker服务
            services.AddApplicationInsightsTelemetryWorkerService();
            // 注册你的Windows Service业务逻辑类
            services.AddHostedService<YourWorkerService>();
        })
        .ConfigureLogging(logging =>
        {
            // 清除默认日志提供器(可选,减少冗余日志)
            logging.ClearProviders();
            // 添加Application Insights日志提供器
            logging.AddApplicationInsights();
            // 设置全局日志级别
            logging.SetMinimumLevel(LogLevel.Information);
        })
        .Build();
    
    await host.RunAsync();
    
  • 在业务类中使用日志:通过依赖注入ILogger<T>直接写入日志,示例:

    public class YourWorkerService : BackgroundService
    {
        private readonly ILogger<YourWorkerService> _logger;
    
        public YourWorkerService(ILogger<YourWorkerService> logger)
        {
            _logger = logger;
        }
    
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation("服务运行时间:{Time}", DateTimeOffset.Now);
                await Task.Delay(1000, stoppingToken);
            }
        }
    }
    

通用排查要点

  • 验证ConnectionString有效性:确认InstrumentationKey未使用占位符,IngestionEndpoint区域与你的Application Insights实例所在区域匹配。
  • 检查服务运行权限:Windows Service的运行账户需具备访问Azure ingestion端点的网络权限,若在内网环境,需确保防火墙允许出站请求到对应地址。
  • 查看本地事件日志:在Windows事件查看器中检查服务是否抛出初始化或日志发送相关的异常。
  • 等待数据延迟:Application Insights数据存在5-10分钟的延迟,配置完成后需等待一段时间再到Azure门户的「日志」面板使用traces查询日志。

内容的提问来源于stack exchange,提问作者Alex Gordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:03:10