From 260ad2efa7c61bc1f6b04a528e67ace97d5d1d41 Mon Sep 17 00:00:00 2001 From: Elias Haugsbakk Date: Sat, 25 Jul 2026 15:09:44 +0200 Subject: implement basic logging using SLF4J --- .../src/main/java/no/eliashaugsbakk/clams/server/Main.java | 6 +++++- .../no/eliashaugsbakk/clams/server/config/AppConfig.java | 13 +++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'clams-server/src/main') diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/Main.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/Main.java index 8f494ed..eba65f8 100644 --- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/Main.java +++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/Main.java @@ -6,8 +6,11 @@ import io.javalin.rendering.template.JavalinPebble; import java.util.Map; import no.eliashaugsbakk.clams.server.config.AppContext; import no.eliashaugsbakk.clams.server.config.AppRoutes; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class Main { + private static final Logger log = LoggerFactory.getLogger(Main.class); void main() { // Initialize dependencies AppContext context = new AppContext(); @@ -37,7 +40,7 @@ public class Main { ))); config.routes.exception(Exception.class, (e, ctx) -> { - e.printStackTrace(); + log.error("Unhandled error on {} {}", ctx.method(), ctx.path(), e); ctx.status(500); if (ctx.path().startsWith("/api")) { @@ -55,6 +58,7 @@ public class Main { } catch (Exception e) { context.close(); + log.error("Unexpected error", e); throw e; } } diff --git a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppConfig.java b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppConfig.java index 05e92d2..4e5b50f 100644 --- a/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppConfig.java +++ b/clams-server/src/main/java/no/eliashaugsbakk/clams/server/config/AppConfig.java @@ -9,8 +9,11 @@ import java.nio.file.attribute.PosixFilePermissions; import java.security.SecureRandom; import java.util.Base64; import java.util.Properties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class AppConfig { + private static final Logger log = LoggerFactory.getLogger(AppConfig.class); private final Properties properties = new Properties(); private Path configPath; @@ -35,11 +38,11 @@ public class AppConfig { Path storageDir = Path.of(getStorageLocation()); if (!Files.exists(storageDir)) { Files.createDirectories(storageDir); - System.out.println("Created application storage directory at: " + storageDir.toAbsolutePath()); + log.info("Created application storage directory at: {}", storageDir.toAbsolutePath()); } setOwnerOnlyPermissions(storageDir); } catch (IOException e) { - System.err.println("Warning: Could not verify or create storage directory: " + e.getMessage()); + log.warn("Could not verify or create storage directory", e); } } @@ -72,10 +75,10 @@ public class AppConfig { """, token)); } setOwnerOnlyPermissions(configPath); - IO.println("Generated a default configuration file at: " + configPath); + log.info("Generated a default configuration file at: {}", configPath); } catch (IOException e) { - System.err.println("Could not create default config file: " + e.getMessage()); + log.error("Could not create default config file", e); } } @@ -86,8 +89,6 @@ public class AppConfig { public String getAuthToken() { String token = properties.getProperty("authorization_token"); if (token == null || token.isBlank()) { - System.err.println("CRITICAL: 'authorization_token' is missing or empty in config properties!"); - throw new IllegalStateException("CRITICAL: 'authorization_token' is missing or empty in config properties!"); } return token; -- cgit v1.2.3