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: {