Skip to content
This repository was archived by the owner on Dec 13, 2018. It is now read-only.

Commit bff2ae0

Browse files
authored
Update to newer version of Serilog that supports flushing (#499)
1 parent 6ac0ab6 commit bff2ae0

File tree

4 files changed

+26
-4
lines changed

4 files changed

+26
-4
lines changed

src/Microsoft.Extensions.Logging.AzureAppServices/AzureAppServicesDiagnosticsSettings.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,14 @@ public class AzureAppServicesDiagnosticsSettings
4141
/// </summary>
4242
public string BlobName { get; set; } = "applicationLog.txt";
4343

44+
/// <summary>
4445
/// Gets of sets the maximum size of the background log message queue.
46+
/// </summary>
4547
public int BackgroundQueueSize { get; set; }
48+
49+
/// <summary>
50+
/// Gets or sets the period after which logs will be flushed to disk.
51+
/// </summary>
52+
public TimeSpan? FileFlushPeriod { get; set; } = TimeSpan.FromSeconds(1);
4653
}
4754
}

src/Microsoft.Extensions.Logging.AzureAppServices/Internal/AzureAppServicesDiagnosticsLoggerProvider.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ public AzureAppServicesDiagnosticsLoggerProvider(WebAppContext context, AzureApp
3838
settings.FileSizeLimit,
3939
settings.RetainedFileCountLimit,
4040
settings.BackgroundQueueSize,
41-
settings.OutputTemplate);
41+
settings.OutputTemplate,
42+
settings.FileFlushPeriod);
4243

4344
_loggerFactory.AddSerilog(fileLoggerProvider.ConfigureLogger(_configurationReader));
4445
if (!string.IsNullOrEmpty(config.BlobContainerUrl))

src/Microsoft.Extensions.Logging.AzureAppServices/Internal/FileLoggerProvider.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Serilog;
77
using Serilog.Core;
88
using Serilog.Formatting.Display;
9+
using Serilog.Sinks.File;
910
using Serilog.Sinks.RollingFile;
1011

1112
namespace Microsoft.Extensions.Logging.AzureAppServices.Internal
@@ -19,6 +20,7 @@ public class FileLoggerProvider
1920
private readonly int _retainedFileCountLimit;
2021
private readonly int _backgroundQueueSize;
2122
private readonly string _outputTemplate;
23+
private readonly TimeSpan? _flushPeriod;
2224

2325
private const string FileNamePattern = "diagnostics-{Date}.txt";
2426

@@ -29,7 +31,8 @@ public class FileLoggerProvider
2931
/// <param name="retainedFileCountLimit">A strictly positive value representing the maximum retained file count</param>
3032
/// <param name="backgroundQueueSize">The maximum size of the background queue</param>
3133
/// <param name="outputTemplate">A message template describing the output messages</param>
32-
public FileLoggerProvider(int fileSizeLimit, int retainedFileCountLimit, int backgroundQueueSize, string outputTemplate)
34+
/// <param name="flushPeriod">A period after which logs will be flushed to disk</param>
35+
public FileLoggerProvider(int fileSizeLimit, int retainedFileCountLimit, int backgroundQueueSize, string outputTemplate, TimeSpan? flushPeriod)
3336
{
3437
if (outputTemplate == null)
3538
{
@@ -48,6 +51,7 @@ public FileLoggerProvider(int fileSizeLimit, int retainedFileCountLimit, int bac
4851
_retainedFileCountLimit = retainedFileCountLimit;
4952
_backgroundQueueSize = backgroundQueueSize;
5053
_outputTemplate = outputTemplate;
54+
_flushPeriod = flushPeriod;
5155
}
5256

5357
/// <inheritdoc />
@@ -69,7 +73,17 @@ public Logger ConfigureLogger(IWebAppLogConfigurationReader reader)
6973

7074
var messageFormatter = new MessageTemplateTextFormatter(_outputTemplate, null);
7175
var rollingFileSink = new RollingFileSink(logsFilePattern, messageFormatter, _fileSizeLimit, _retainedFileCountLimit);
72-
var backgroundSink = new BackgroundSink(rollingFileSink, _backgroundQueueSize);
76+
77+
ILogEventSink flushingSink;
78+
if (_flushPeriod != null)
79+
{
80+
flushingSink = new PeriodicFlushToDiskSink(rollingFileSink, _flushPeriod.Value);
81+
}
82+
else
83+
{
84+
flushingSink = rollingFileSink;
85+
}
86+
var backgroundSink = new BackgroundSink(flushingSink, _backgroundQueueSize);
7387

7488
var loggerConfiguration = new LoggerConfiguration();
7589
loggerConfiguration.WriteTo.Sink(backgroundSink);

src/Microsoft.Extensions.Logging.AzureAppServices/project.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"NETStandard.Library": "1.6.1-*",
2020
"Serilog.Extensions.Logging": "1.0.0",
2121
"Serilog.Sinks.PeriodicBatching": "2.0.0",
22-
"Serilog.Sinks.RollingFile": "2.1.0",
22+
"Serilog.Sinks.RollingFile": "3.1.0",
2323
"WindowsAzure.Storage": "7.2.0"
2424
},
2525
"frameworks": {

0 commit comments

Comments
 (0)