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 @@
+