diff --git a/src/Serilog.Sinks.File/RollingInterval.cs b/src/Serilog.Sinks.File/RollingInterval.cs index 9fac848..7b013d9 100644 --- a/src/Serilog.Sinks.File/RollingInterval.cs +++ b/src/Serilog.Sinks.File/RollingInterval.cs @@ -34,6 +34,11 @@ public enum RollingInterval /// Month, + /// + /// Roll every calendar week. Filenames will have yyyyMMdd appended. + /// + Week, + /// /// Roll every day. Filenames will have yyyyMMdd appended. /// diff --git a/src/Serilog.Sinks.File/Serilog.Sinks.File.csproj b/src/Serilog.Sinks.File/Serilog.Sinks.File.csproj index 7b81e3f..6789a87 100644 --- a/src/Serilog.Sinks.File/Serilog.Sinks.File.csproj +++ b/src/Serilog.Sinks.File/Serilog.Sinks.File.csproj @@ -11,9 +11,9 @@ true serilog;file images\icon.png - https://serilog.net/images/serilog-sink-nuget.png http://serilog.net Apache-2.0 + http://www.apache.org/licenses/LICENSE-2.0 https://github.com/serilog/serilog-sinks-file git false diff --git a/src/Serilog.Sinks.File/Sinks/File/RollingIntervalExtensions.cs b/src/Serilog.Sinks.File/Sinks/File/RollingIntervalExtensions.cs index 2c9e2fd..101a0ef 100644 --- a/src/Serilog.Sinks.File/Sinks/File/RollingIntervalExtensions.cs +++ b/src/Serilog.Sinks.File/Sinks/File/RollingIntervalExtensions.cs @@ -28,6 +28,8 @@ public static string GetFormat(this RollingInterval interval) return "yyyy"; case RollingInterval.Month: return "yyyyMM"; + case RollingInterval.Week: + return "yyyyMMdd"; case RollingInterval.Day: return "yyyyMMdd"; case RollingInterval.Hour: @@ -49,6 +51,8 @@ public static string GetFormat(this RollingInterval interval) return new DateTime(instant.Year, 1, 1, 0, 0, 0, instant.Kind); case RollingInterval.Month: return new DateTime(instant.Year, instant.Month, 1, 0, 0, 0, instant.Kind); + case RollingInterval.Week: + return new DateTime(instant.Year, instant.Month, instant.Day, 0, 0, 0, instant.Kind); case RollingInterval.Day: return new DateTime(instant.Year, instant.Month, instant.Day, 0, 0, 0, instant.Kind); case RollingInterval.Hour: @@ -72,6 +76,8 @@ public static string GetFormat(this RollingInterval interval) return current.Value.AddYears(1); case RollingInterval.Month: return current.Value.AddMonths(1); + case RollingInterval.Week: + return current.Value.AddDays(7); case RollingInterval.Day: return current.Value.AddDays(1); case RollingInterval.Hour: diff --git a/test/Serilog.Sinks.File.Tests/RollingIntervalExtensionsTests.cs b/test/Serilog.Sinks.File.Tests/RollingIntervalExtensionsTests.cs index 2d97d1b..8cc0914 100644 --- a/test/Serilog.Sinks.File.Tests/RollingIntervalExtensionsTests.cs +++ b/test/Serilog.Sinks.File.Tests/RollingIntervalExtensionsTests.cs @@ -12,6 +12,8 @@ public class RollingIntervalExtensionsTests new object[]{ RollingInterval.Year, new DateTime(2018, 06, 01), new DateTime(2018, 01, 01), new DateTime(2019, 01, 01) }, new object[]{ RollingInterval.Month, new DateTime(2018, 01, 01), new DateTime(2018, 01, 01), new DateTime(2018, 02, 01) }, new object[]{ RollingInterval.Month, new DateTime(2018, 01, 14), new DateTime(2018, 01, 01), new DateTime(2018, 02, 01) }, + new object[]{ RollingInterval.Week, new DateTime(2018, 01, 01), new DateTime(2018, 01, 01), new DateTime(2018, 01, 08) }, + new object[]{ RollingInterval.Week, new DateTime(2018, 01, 01, 12, 0, 0), new DateTime(2018, 01, 01), new DateTime(2018, 01, 08) }, new object[]{ RollingInterval.Day, new DateTime(2018, 01, 01), new DateTime(2018, 01, 01), new DateTime(2018, 01, 02) }, new object[]{ RollingInterval.Day, new DateTime(2018, 01, 01, 12, 0, 0), new DateTime(2018, 01, 01), new DateTime(2018, 01, 02) }, new object[]{ RollingInterval.Hour, new DateTime(2018, 01, 01, 0, 0, 0), new DateTime(2018, 01, 01), new DateTime(2018, 01, 01, 1, 0, 0) }, diff --git a/test/Serilog.Sinks.File.Tests/Serilog.Sinks.File.Tests.csproj b/test/Serilog.Sinks.File.Tests/Serilog.Sinks.File.Tests.csproj index fcf2880..8c99f35 100644 --- a/test/Serilog.Sinks.File.Tests/Serilog.Sinks.File.Tests.csproj +++ b/test/Serilog.Sinks.File.Tests/Serilog.Sinks.File.Tests.csproj @@ -18,6 +18,8 @@ + +