1

我试图在我的 .net core 2.2 应用程序中使用新的 Steeltoe Serilog 动态记录器https://steeltoe.io/docs/steeltoe-logging/#2-0-serilog-dynamic-logger 。我使用了 Steeltoe.Extensions.Logging.SerilogDynamicLogger 包的 2.3.0 版本。在我的 program.cs 中,我有以下代码

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .ConfigureAppConfiguration((hostContext, configApp) =>
                {
                    configApp.AddCloudFoundry();
                    configApp.AddConfigServer();
                })
                .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
                     .ReadFrom.Configuration(hostingContext.Configuration)
                     .WriteTo.Trace())
                .ConfigureLogging((builderContext, loggingBuilder) =>
                 {
                     loggingBuilder.ClearProviders();
                     loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Logging"));
                     // Add Serilog Dynamic Logger 
                     loggingBuilder.AddSerilogDynamicConsole();
                 });  

在上面的块中,首先我不知道为什么

loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Logging"));

是必需的,因为它用于配置 Microsoft ILogger,而 Serilog 不建议进行此类设置。无论如何,我的 appsettings.json 中都有

  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning",
      "System": "Warning",
      "Microsoft": "Warning"
    }
  },

  "Serilog": {
    "MinimumLevel": {
      "Default": "Information"
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
        }
      },
      {
        "Name": "Trace",
        "Args": {
          "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
        }
      }
    ],
    "Enrich": [ "FromLogContext" ]
  },

部署到 PCF 后,单击配置日志记录级别后,我只能在过滤记录器下看到 1/1,同样在更改默认记录器后,日志级别未得到控制。我正在使用 PCF 2.4。关于为什么它不起作用的任何想法都会有所帮助。

4

1 回答 1

0

我在https://github.com/SteeltoeOSS/Samples/tree/master/Management/src/AspDotNetCore/CloudFoundry用 2.3.0测试了样本(它目前在 2.3.0-rc2 是相同的)。它适用于我的 CF 2.6。您能否尝试在您的环境中部署示例并确保 Logging 端点如下所示:在此处输入图像描述

在您的 cli 中,运行cf logs <sample app name> | grep Test. 现在调整 Cloudfoundry.Controllers 日志记录级别,访问主页。您应该看到日志的详细程度有所不同。希望通过这个您可以比较并查看应用程序/配置的不同之处。

    ➜  CloudFoundry git:(2.x) ✗ cf logs actuator | grep Test
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Critical message
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Error message
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Warning message
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Informational message
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Debug message

----- after adjusting ------

   2019-08-28T12:52:16.29-0400 [APP/PROC/WEB/0] OUT   Test Critical message
于 2019-08-28T18:19:44.467 回答