From f317be9eab9ccb3b2df8d8ba639b3e09af082beb Mon Sep 17 00:00:00 2001 From: mineseo-kim Date: Thu, 9 Apr 2026 09:38:59 +0900 Subject: [PATCH] fix(logging): clarify LOG_DIR creation and bootstrap errors - Wrap mkdir in ensureLogDir with stderr message on failure. - Trim LOG_DIR; note in .env.example that the directory is created at startup. Made-with: Cursor --- .env.example | 2 +- src/utils/logger.ts | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 9f81ddd..fa5b785 100644 --- a/.env.example +++ b/.env.example @@ -9,5 +9,5 @@ DATABASE_URL="postgresql://kord:password@localhost:5432/kord_db?schema=public" # Logging (log4js — file only under LOG_DIR, no console appender) # Levels: trace, debug, info, warn, error, fatal LOG_LEVEL=info -# Daily log files; keep 7 rotated days (see logger.ts) +# Daily log files; keep 7 rotated days (see logger.ts). Directory is created at startup if missing. LOG_DIR=logs \ No newline at end of file diff --git a/src/utils/logger.ts b/src/utils/logger.ts index 04d51b1..67e53d2 100644 --- a/src/utils/logger.ts +++ b/src/utils/logger.ts @@ -14,10 +14,20 @@ function resolveLogLevel(): LogLevel { return (LOG_LEVELS as readonly string[]).includes(raw) ? (raw as LogLevel) : 'info'; } -const logDir = resolve(process.env.LOG_DIR || 'logs'); +function ensureLogDir(dir: string): void { + try { + mkdirSync(dir, { recursive: true }); + } catch (err) { + const msg = err instanceof Error ? err.message : String(err); + process.stderr.write(`[kord] Failed to create LOG_DIR "${dir}": ${msg}\n`); + throw err; + } +} + +const logDir = resolve((process.env.LOG_DIR || 'logs').trim()); const level = resolveLogLevel(); -mkdirSync(logDir, { recursive: true }); +ensureLogDir(logDir); log4js.configure({ appenders: {