From 52842072e55252259348403f8b991e12e32cbeb1 Mon Sep 17 00:00:00 2001 From: "Wieland, Marc" Date: Fri, 26 Jun 2026 14:56:19 +0200 Subject: [PATCH] Loggin --- docker-compose.yml | 6 +++++- timetracker.Server/Dockerfile | 3 +++ timetracker.Server/Program.cs | 21 +++++++++++++++++++ .../appsettings.Development.json | 10 +++++++++ timetracker.Server/appsettings.json | 10 +++++++++ timetracker.Server/timetracker.Server.csproj | 2 ++ 6 files changed, 51 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index e05ec92..a467396 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,9 +28,11 @@ services: - DB_PROVIDER=PostgreSQL - ConnectionStrings__DefaultConnection=Host=db;Database=timetracker;Username=timetracker_user;Password=SecretPassword123; - EnableHttpsRedirect=false + - TIMETRACKER_LOG_DIR=/app/logs - TenantSettings__BaseDomain=timetracker.marc-wieland.de volumes: - dpkeys:/home/app/.aspnet/DataProtection-Keys + - applogs:/app/logs depends_on: - db @@ -38,4 +40,6 @@ volumes: pgdata: name: timetracker_pgdata dpkeys: - name: timetracker_dpkeys \ No newline at end of file + name: timetracker_dpkeys + applogs: + name: timetracker_logs \ No newline at end of file diff --git a/timetracker.Server/Dockerfile b/timetracker.Server/Dockerfile index 237f18d..5b27dc9 100644 --- a/timetracker.Server/Dockerfile +++ b/timetracker.Server/Dockerfile @@ -27,15 +27,18 @@ COPY --from=build /app/publish . # Directory for SQLite database RUN mkdir -p /data +RUN mkdir -p /app/logs ENV ASPNETCORE_HTTP_PORTS=8080 ENV ASPNETCORE_ENVIRONMENT=Production ENV ASPNETCORE_FORWARDEDHEADERS_ENABLED=true ENV TIMETRACKER_DB_PATH=/data/timetracker.db +ENV TIMETRACKER_LOG_DIR=/app/logs ENV EnableHttpsRedirect=false EXPOSE 8080 VOLUME ["/data"] +VOLUME ["/app/logs"] ENTRYPOINT ["dotnet", "timetracker.Server.dll"] \ No newline at end of file diff --git a/timetracker.Server/Program.cs b/timetracker.Server/Program.cs index 31e795b..b18149b 100644 --- a/timetracker.Server/Program.cs +++ b/timetracker.Server/Program.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.HttpOverrides; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using MudBlazor.Services; +using Serilog; using timetracker.Server.Components; using timetracker.Data; using timetracker.Shared; @@ -16,6 +17,24 @@ var builder = WebApplication.CreateBuilder(args); const string SuperAdminUsername = "marc"; const string SuperAdminPassword = "123456"; +var logDirectory = Environment.GetEnvironmentVariable("TIMETRACKER_LOG_DIR") + ?? Path.Combine(builder.Environment.ContentRootPath, "logs"); +Directory.CreateDirectory(logDirectory); + +Log.Logger = new LoggerConfiguration() + .ReadFrom.Configuration(builder.Configuration) + .Enrich.FromLogContext() + .WriteTo.Console() + .WriteTo.File( + Path.Combine(logDirectory, "timetracker-.log"), + rollingInterval: RollingInterval.Day, + retainedFileCountLimit: 14, + shared: true, + flushToDiskInterval: TimeSpan.FromSeconds(1)) + .CreateLogger(); + +builder.Host.UseSerilog(); + // Add Authentication builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => @@ -132,6 +151,8 @@ else var app = builder.Build(); +app.Logger.LogInformation("File logging active. Writing logs to {LogDirectory}", logDirectory); + // Migrate or Ensure Database Created using (var scope = app.Services.CreateScope()) { diff --git a/timetracker.Server/appsettings.Development.json b/timetracker.Server/appsettings.Development.json index 0c208ae..b3fd3d7 100644 --- a/timetracker.Server/appsettings.Development.json +++ b/timetracker.Server/appsettings.Development.json @@ -1,4 +1,14 @@ { + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.AspNetCore": "Warning", + "Microsoft.EntityFrameworkCore": "Information" + } + } + }, "Logging": { "LogLevel": { "Default": "Information", diff --git a/timetracker.Server/appsettings.json b/timetracker.Server/appsettings.json index 10f68b8..3f371a0 100644 --- a/timetracker.Server/appsettings.json +++ b/timetracker.Server/appsettings.json @@ -1,4 +1,14 @@ { + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.AspNetCore": "Warning", + "Microsoft.EntityFrameworkCore": "Information" + } + } + }, "Logging": { "LogLevel": { "Default": "Information", diff --git a/timetracker.Server/timetracker.Server.csproj b/timetracker.Server/timetracker.Server.csproj index 29f27f4..9de85f2 100644 --- a/timetracker.Server/timetracker.Server.csproj +++ b/timetracker.Server/timetracker.Server.csproj @@ -14,6 +14,8 @@ + +