Skip to content

Commit b213a7a

Browse files
committed
Refactoring file filter; fixing docs
1 parent 1596f80 commit b213a7a

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

src/Serilog.Sinks.File/FileLoggerConfigurationExtensions.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,6 @@ public static LoggerConfiguration File(
138138
/// including the current log file. For unlimited retention, pass null. The default is 31.</param>
139139
/// <param name="encoding">Character encoding used to write the text file. The default is UTF-8 without BOM.</param>
140140
/// <returns>Configuration object allowing method chaining.</returns>
141-
/// <remarks>The file will be written using the UTF-8 character set.</remarks>
142141
[Obsolete("New code should not be compiled against this obsolete overload"), EditorBrowsable(EditorBrowsableState.Never)]
143142
public static LoggerConfiguration File(
144143
this LoggerSinkConfiguration sinkConfiguration,
@@ -239,7 +238,6 @@ public static LoggerConfiguration File(
239238
/// Ignored if <paramref see="rollingInterval"/> is <see cref="RollingInterval.Infinite"/>.
240239
/// The default is to retain files indefinitely.</param>
241240
/// <returns>Configuration object allowing method chaining.</returns>
242-
/// <remarks>The file will be written using the UTF-8 character set.</remarks>
243241
public static LoggerConfiguration File(
244242
this LoggerSinkConfiguration sinkConfiguration,
245243
string path,

src/Serilog.Sinks.File/Sinks/File/RollingFileSink.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -191,15 +191,11 @@ void ApplyRetentionPolicy(string currentFilePath)
191191
var newestFirst = _roller
192192
.SelectMatches(potentialMatches)
193193
.OrderByDescending(m => m.DateTime)
194-
.ThenByDescending(m => m.SequenceNumber)
195-
.Select(m => new { m.Filename, m.DateTime });
194+
.ThenByDescending(m => m.SequenceNumber);
196195

197196
var toRemove = newestFirst
198197
.Where(n => StringComparer.OrdinalIgnoreCase.Compare(currentFileName, n.Filename) != 0)
199-
.SkipWhile((x, i) => (i < (_retainedFileCountLimit - 1 ?? 0)) &&
200-
(!_retainedFileTimeLimit.HasValue ||
201-
x.DateTime.HasValue &&
202-
DateTime.Now.Subtract(_retainedFileTimeLimit.Value).CompareTo(x.DateTime.Value) <= 0))
198+
.SkipWhile(FilterFiles)
203199
.Select(x => x.Filename)
204200
.ToList();
205201

@@ -217,6 +213,17 @@ void ApplyRetentionPolicy(string currentFilePath)
217213
}
218214
}
219215

216+
private bool FilterFiles(RollingLogFile file, int index)
217+
{
218+
var isInCountLimit = index < (_retainedFileCountLimit - 1 ?? 0);
219+
220+
var isInTimeLimit = !_retainedFileTimeLimit.HasValue;
221+
if (_retainedFileTimeLimit.HasValue && file.DateTime.HasValue)
222+
isInTimeLimit = DateTime.Now.Subtract(_retainedFileTimeLimit.Value).CompareTo(file.DateTime.Value) <= 0;
223+
224+
return isInCountLimit && isInTimeLimit;
225+
}
226+
220227
public void Dispose()
221228
{
222229
lock (_syncRoot)

0 commit comments

Comments
 (0)