首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Serilog和ApplicationInsights

使用Serilog和ApplicationInsights
EN

Stack Overflow用户
提问于 2020-10-22 00:55:59
回答 1查看 2.2K关注 0票数 2

我正在尝试将Serilog日志记录与Application Insights连接起来,使用的是:Serilog Sinks

我不确定为什么它看起来根本不能记录到ApplicationInsights中,而文件记录部分却能正常工作。

这是我来自Program.cs的代码:

代码语言:javascript
复制
public static int Main(string[] args)
    {
        var config = ConfigurationHelper.GetConfiguration();
        var loggerConfiguration = new LoggerConfiguration()
             .ReadFrom.Configuration(config);
        var telemetryConfiguration = TelemetryConfiguration
               .CreateDefault();
        telemetryConfiguration.InstrumentationKey = config["ApplicationInsights:InstrumentationKey"];

        //loggerConfiguration.WriteTo.File("log-files/libtester-web-.log",
        //    outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}",
        //    rollingInterval: RollingInterval.Day);

        Log.Logger = loggerConfiguration
            .WriteTo.ApplicationInsights(telemetryConfiguration, TelemetryConverter.Events)
            .ReadFrom.Configuration(config)
            .Enrich.WithMachineName()
            .Enrich.WithProcessId()
            .Enrich.FromLogContext()
            .CreateLogger();

        try
        {
            Log.Information("Starting web host");
            CreateHostBuilder(args).Build().Run();
            return 0;
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Host terminated unexpectedly");
            return 1;
        }
        finally
        {
            Log.CloseAndFlush();
        }
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
       Host.CreateDefaultBuilder(args)
           .ConfigureWebHostDefaults(webBuilder =>
           {
               webBuilder.UseStartup<Startup>();
           })
           .UseSerilog();

Appsettings.json中的相应部分:

代码语言:javascript
复制
  "Serilog": {
"Using": [
  "Serilog.Sinks.ApplicationInsights"
],
"MinimumLevel": {
  "Default": "Debug",
  "Override": {
    "Microsoft": "Information"
  }
},
"WriteTo": [
  {
    "Name": "ApplicationInsights",
    "Args": {
      "restrictedToMinimumLevel": "Information",
      "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
    }
  },
  {
    "Name": "File",
    "Args": {
      "path": "log-files/libtester-web-.log",
      "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}",
      "rollingInterval": "Day",
      "shared": true
    }
  }
],
"Enrich": [ "FromLogContext" ],
"Properties": {
  "Application": "LibTester.Web"
}

}

它可以很好地将日志记录到日志文件目录中,但是我在AppInsights中的资源没有得到相同的日志。

我在输出中添加了以下两条消息:'Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));‘

应用洞察遥测(未配置):{"name":"AppTraces","time":"2020-10-22T15:06:06.1140795Z","tags":{"ai.cloud.roleInstance":"MSI-970","ai.internal.sdkVersion":"dotnetc:2.15.0-44797"},“baseType”:“41f0a970096b14a”,"ai.operation.id":"1b296d7eaa070941b54ef0b5019a7e18","data":{"baseType":"MessageData","baseData":{"ver":2,“message”:“请求在628.7215ms 200application/json完成;"properties":{"ContentType":"application/json;=utf-8“,”severityLevel“:”信息“,charset"MessageTemplate":"{HostingRequestFinishedLog:l}",=ProcessId-8“,”ElapsedMilliseconds“:”57840“,"ElapsedMilliseconds":"628.7215","SpanId":"41f0aa970096b14a",”应用“:”LibTester.Web“,"RequestPath":"/weatherforecast","StatusCode":"200","ParentId":"0000000000000000",charset "MachineName":"MSI-970","EventId":"{"Id":2}","TraceId":"1b296d7eaa070941b54ef0b5019a7e18","RequestId":"80000032-0003-fe00-b63f-84710c7967bb",“HostingRequestFinishedLog”:“请求在628.7215ms 200application/json完成;charset=utf-8","SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics"}}}}应用洞察遥测:{"name":"AppRequests","time":"2020-10-22T15:06:05.4273838Z","iKey":"e1281822-9ed6-4db3-8bad-0de7ce3689a7","tags":{"ai.application.ver":"0.0.1.0","ai.cloud.roleInstance":"MSI-970","ai.user.id":"POM78vd9lDKUjMr10/Qhgc","ai.operation.id":"1b296d7eaa070941b54ef0b5019a7e18",“ai.operation.name”:“获取天气预报/获取”,"ai.location.ip":"::1","ai.internal.sdkVersion":"aspnet5c:2.15.0+2c60e729d6512c31e5791ec93c9f7796d54fe426",“ai.operation.name”:“MSI-970”},"data":{"baseType":"RequestData","baseData":{"ver":2,“id”:“41f0a970096b14a”,“name”:“获取天气预报/获取”,"duration":"00:00:00.7411718","success":true,"responseCode":"200","url":"https://localhost:44337/weatherforecast","properties":{"DeveloperMode":"true","_MS.ProcessedByMetricExtractors":"(Name:'Requests',版本:‘1.1’)“,”AspNetCoreEnvironment“:”开发“}

EN

回答 1

Stack Overflow用户

发布于 2020-10-27 16:52:41

请尝试在appsettings.json中删除此分区

代码语言:javascript
复制
  {
    "Name": "ApplicationInsights",
    "Args": {
      "restrictedToMinimumLevel": "Information",
      "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
    }
  },

删除后,我可以看到日志在azure门户->应用程序洞察中。

下面是我测试中的appsettings.json

代码语言:javascript
复制
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ApplicationInsights": {
    "InstrumentationKey": "xxxxxxxxx"
  },
  "Serilog": {
    "Using": [
      "Serilog.Sinks.ApplicationInsights"
    ],
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Information"
      }
    },
    "WriteTo": [    
      {
        "Name": "File",
        "Args": {
          "path": "log-files/libtester-web-.log",
          "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}",
          "rollingInterval": "Day",
          "shared": true
        }
      }
    ],
    "Enrich": [ "FromLogContext" ],
    "Properties": {
      "Application": "LibTester.Web"
    }
   }
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64468271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档