From 8878301c7f1736039efc59a1dff96a1f882a68f5 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Mon, 23 Feb 2026 01:05:10 -0500 Subject: [PATCH] test: add file logging and rotation tests --- tests/NATS.Server.Tests/LoggingTests.cs | 60 +++++++++++++++++++ .../NATS.Server.Tests.csproj | 1 + 2 files changed, 61 insertions(+) create mode 100644 tests/NATS.Server.Tests/LoggingTests.cs diff --git a/tests/NATS.Server.Tests/LoggingTests.cs b/tests/NATS.Server.Tests/LoggingTests.cs new file mode 100644 index 0000000..d1daf6d --- /dev/null +++ b/tests/NATS.Server.Tests/LoggingTests.cs @@ -0,0 +1,60 @@ +using Serilog; + +namespace NATS.Server.Tests; + +public class LoggingTests : IDisposable +{ + private readonly string _logDir; + + public LoggingTests() + { + _logDir = Path.Combine(Path.GetTempPath(), $"nats-log-test-{Guid.NewGuid():N}"); + Directory.CreateDirectory(_logDir); + } + + public void Dispose() + { + try { Directory.Delete(_logDir, true); } catch { } + } + + [Fact] + public void File_sink_creates_log_file() + { + var logPath = Path.Combine(_logDir, "test.log"); + + using var logger = new LoggerConfiguration() + .WriteTo.File(logPath) + .CreateLogger(); + + logger.Information("Hello from test"); + logger.Dispose(); + + File.Exists(logPath).ShouldBeTrue(); + var content = File.ReadAllText(logPath); + content.ShouldContain("Hello from test"); + } + + [Fact] + public void File_sink_rotates_on_size_limit() + { + var logPath = Path.Combine(_logDir, "rotate.log"); + + using var logger = new LoggerConfiguration() + .WriteTo.File( + logPath, + fileSizeLimitBytes: 200, + rollOnFileSizeLimit: true, + retainedFileCountLimit: 3) + .CreateLogger(); + + // Write enough to trigger rotation + for (int i = 0; i < 50; i++) + logger.Information("Log message number {Number} with some padding text", i); + + logger.Dispose(); + + // Should have created rotated files + var logFiles = Directory.GetFiles(_logDir, "rotate*.log"); + logFiles.Length.ShouldBeGreaterThan(1); + } +} diff --git a/tests/NATS.Server.Tests/NATS.Server.Tests.csproj b/tests/NATS.Server.Tests/NATS.Server.Tests.csproj index 611a86f..67f3fe4 100644 --- a/tests/NATS.Server.Tests/NATS.Server.Tests.csproj +++ b/tests/NATS.Server.Tests/NATS.Server.Tests.csproj @@ -13,6 +13,7 @@ +