diff --git a/Aaru.Server/Aaru.Server.csproj b/Aaru.Server/Aaru.Server.csproj
index 28a4afde..ce892457 100644
--- a/Aaru.Server/Aaru.Server.csproj
+++ b/Aaru.Server/Aaru.Server.csproj
@@ -30,6 +30,7 @@
+
diff --git a/Aaru.Server/Program.cs b/Aaru.Server/Program.cs
index ad83127e..3118537b 100644
--- a/Aaru.Server/Program.cs
+++ b/Aaru.Server/Program.cs
@@ -80,6 +80,27 @@ builder.Logging.AddSerilog(new LoggerConfiguration().WriteTo
restrictedToMinimumLevel: LogEventLevel.Information)
.CreateLogger());
+IConfigurationSection logFileSection = builder.Configuration.GetSection("Serilog:File");
+
+builder.Logging.AddSerilog(new LoggerConfiguration().WriteTo.File(logFileSection["Path"] ?? "logs/log.txt",
+ fileSizeLimitBytes:
+ long.TryParse(logFileSection["FileSizeLimitBytes"],
+ out long sizeLimit)
+ ? sizeLimit
+ : 10 * 1024 * 1024,
+ rollingInterval:
+ Enum.TryParse(logFileSection["RollingInterval"],
+ out RollingInterval interval)
+ ? interval
+ : RollingInterval.Day,
+ rollOnFileSizeLimit: true,
+ retainedFileCountLimit:
+ int.TryParse(logFileSection["MaxRetainedFiles"],
+ out int maxFiles)
+ ? maxFiles
+ : 31)
+ .CreateLogger());
+
builder.Logging.AddSerilog(new LoggerConfiguration().WriteTo
.Sentry("https://0bdaf61514c94d74c3c8c7d1cbba999f@sentry.claunia.com/2",
LogEventLevel.Debug,
diff --git a/Aaru.Server/appsettings.json b/Aaru.Server/appsettings.json
index 019ae16f..40e18f37 100644
--- a/Aaru.Server/appsettings.json
+++ b/Aaru.Server/appsettings.json
@@ -3,6 +3,13 @@
"DefaultConnection": "DataSource=Data\\app.db;Cache=Shared"
},
"Logging": {
+ "LogFile": {
+ "Path": "/var/log/aaru-server/aaru-server.log",
+ "RollingInterval": "Day",
+ "FileSizeLimitBytes": 10485760,
+ "MaxRetainedFiles": 7,
+ "RetainedDays": 30
+ },
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
diff --git a/Directory.Packages.props b/Directory.Packages.props
index def94833..c1d4188f 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -39,6 +39,7 @@
+