簡體   English   中英

為什么 Serilog selflog 在這個簡單的 windows 服務中不起作用?

[英]Why does not Serilog selflog work in this simple windows service?

我無法讓 Serilog selflog 在我的 .NET Core 6.0 C# Windows 服務中工作。 這是 Main 的樣子:

public static void Main(string[] args)
        {
            Serilog.Debugging.SelfLog.Enable(msg => System.Diagnostics.Debug.WriteLine($"Seri-serlflog : {msg}"));

            Log.Logger = new LoggerConfiguration().DefaultLoggerSetup<Program>();
            var serviceName = "MyService";

            var configurationBuilder = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
            var appSettings = configurationBuilder.Get<AppSettings>();

            try
            {
                Log.Information("{@serviceName} microservice starting up.", serviceName);
                
                var built = Host.CreateDefaultBuilder(args)
                    .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration))
                    .ConfigureServices((hostContext, services) =>
                    {
                        services
                            .AddHostedService<MyApp.Cloud.MyService.BusinessLogicLayer.MyService>()
                            .Configure<MySettings>(configurationBuilder.GetSection("MQSettings"))
                            .AddAutoMapper(typeof(ConnectorToCloudTreatment))
                            .AddTransi...
                    }).Build();
                Log.Information("{@serviceName} all built.", serviceName);
                built.Run();
                Log.Information("{@serviceName} microservice closing down.", serviceName);
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Unhanled exception in {@serviceName}.", serviceName);
            }
            finally
            {
                Log.Information("{@serviceName} Cleaning up.", serviceName);
                Log.CloseAndFlush();
                Log.Information("{@serviceName} Application Exit.", serviceName);
            }
        }
    }

application.json 的 serilog 部分如下所示:

  "serilog": {
    "Using": [ "Serilog.Sinks.MSSqlServer", "Serilog.Sinks.Email" ],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId" ],
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "[{Timestamp:HH:mm:ss.fff} [{Level}] {SourceContext} {Message}{NewLine}{Exception}",
          "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console"
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "/Logs/logs.txt",
          "outputTemplate": "{Timestamp:G} {SourceContext} [{Level}] {Message}{NewLine:1}{Exception:1}",
          "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog",
          "fileSizeLimitBytes": 1000000,
          "rollOnFileSizeLimit": "true",
          "shared": "true",
          "flushToDiskInterval": 3
        }
      }
    ]
  }

我在這個應用程序中做了很多日志記錄並且它工作正常但是有幾個問題並且找到為什么我需要使用 selflog 但我沒有獲得任何信息到 output > 調試?

編輯:似乎這可能與注射有關。 在 program.cs 中,我使用 static 日志,但在所有其他類中,我使用注入類型的記錄器。 但無論如何,我應該在 output 中得到幾行 $"Seri-serlflog: {msg}" 嗎?

如果您正在嘗試獲取調試級別的日志記錄,則必須放寬您的日志級別:

"MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Debug",
        "System": "Debug"
      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM