diff --git a/prod-run.sh b/prod-run.sh index 0656081..8cac05f 100755 --- a/prod-run.sh +++ b/prod-run.sh @@ -7,6 +7,9 @@ INDEX_FILE="$PROJECT_DIR/index.js" ENV_FILE="$PROJECT_DIR/.env" LOG_DIR="$PROJECT_DIR/logs" BOT_LOG="$LOG_DIR/runewager.log" +LEGACY_BOT_LOG="$PROJECT_DIR/runewager.log" +CRASH_LOG="$LOG_DIR/crash.log" +SYSTEMD_STDOUT_LOG="$LOG_DIR/runewager-1.log" SERVICE_FILE="/etc/systemd/system/runewager.service" LOGROTATE_FILE="/etc/logrotate.d/runewager" CRON_LINE='0 3 * * * /usr/sbin/logrotate -f /etc/logrotate.d/runewager' @@ -31,6 +34,17 @@ ensure_file() { [ -f "$1" ] || : > "$1" } +ensure_log_paths() { + ensure_dir "$LOG_DIR" + ensure_file "$BOT_LOG" + ensure_file "$CRASH_LOG" + ensure_file "$SYSTEMD_STDOUT_LOG" + + if [ ! -f "$LEGACY_BOT_LOG" ]; then + : > "$LEGACY_BOT_LOG" + fi +} + fix_working_directory() { if [ "$(pwd)" != "$PROJECT_DIR" ]; then say "Switching working directory to $PROJECT_DIR" @@ -324,7 +338,7 @@ Restart=always RestartSec=5 KillSignal=SIGTERM TimeoutStopSec=20 -StandardOutput=append:$LOG_DIR/runewager-1.log +StandardOutput=append:$SYSTEMD_STDOUT_LOG StandardError=inherit [Install] @@ -347,7 +361,7 @@ CONF "WorkingDirectory=$PROJECT_DIR" "ExecStart=$PROJECT_DIR/prod-run.sh" "EnvironmentFile=$PROJECT_DIR/.env" - "StandardOutput=append:$LOG_DIR/runewager-1.log" + "StandardOutput=append:$SYSTEMD_STDOUT_LOG" 'Environment=NODE_ENV=production' 'Restart=always' 'RestartSec=5' @@ -380,6 +394,9 @@ print_human_errors() { local blob blob="$(tail -n 200 "$BOT_LOG" 2>/dev/null || true)" + if [ -z "$blob" ] && [ -f "$LEGACY_BOT_LOG" ]; then + blob="$(tail -n 200 "$LEGACY_BOT_LOG" 2>/dev/null || true)" + fi say "Human-readable diagnosis" printf '%s\n' "$blob" | grep -qi 'Cannot find module' && say "Root cause: A Node module is missing or a require path is wrong. Run npm ci and verify relative import paths." @@ -446,10 +463,9 @@ main() { exit 1 fi - ensure_dir "$LOG_DIR" + ensure_log_paths ensure_dir "$PROJECT_DIR/data" ensure_dir "$PROJECT_DIR/data/backups" - ensure_file "$BOT_LOG" fix_merge_conflicts fix_lockfiles