serilog-settings-appsettings
serilog-settings-appsettings copied to clipboard
Serilog flushToDiskInterval doesn't work
Reproduction steps:
-
Setup Program.cs like this: `public class Program { public static void Main(string[] args) { IConfigurationBuilder configBuilder = new ConfigurationBuilder(); configBuilder.SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); IConfiguration config = configBuilder.Build();
Log.Logger = new LoggerConfiguration() .WriteTo.File("Logs/log-{Date}.txt", buffered: true, flushToDiskInterval: TimeSpan.FromSeconds(60)) .CreateLogger(); CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseSerilog() // Set serilog as the logging provider. .UseStartup<Startup>();
}`
-
Get logger via DI in some controller: `private ILogger<SampleDataController> _logger;
public SampleDataController(ILogger<SampleDataController> logger) { _logger = logger; }`
-
Trying to log an event:
public IEnumerable<WeatherForecast> WeatherForecasts(int startDateIndex) { _logger.LogInformation("Test message"); return null; }
Expected result: Logs are flushed to disk every minute.
Real result: Logs are flushed right away as log method called
Hi! How are you determining that the flush is immediate? The flushToDiskInterval
setting only specifies when an fsync is forced; .NET and Windows/Linux may decide to flush out writes faster than that.