From a6ae1bd3772adda99726b1bb6c6a145c634e58e8 Mon Sep 17 00:00:00 2001 From: jjstyle Date: Wed, 11 Mar 2026 17:25:45 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worker/api_receiver.php | 51 ++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/worker/api_receiver.php b/worker/api_receiver.php index a5dcd64..3fbcc87 100644 --- a/worker/api_receiver.php +++ b/worker/api_receiver.php @@ -11,26 +11,39 @@ * @param string $level 로그 레벨 (INFO, ERROR, DEBUG 등) */ function writeLog($message, $level = 'ERROR') { - // 1. 로그 저장 경로 설정 (프로젝트 루트의 logs 폴더) - $logBaseDir = __DIR__ . '/logs'; - $Dir = $logBaseDir . '/'; - - // 2. 폴더가 없으면 생성 (연/월 구조로 관리하면 파일이 너무 많아지는 것을 방지) - if (!is_dir($Dir)) { - @mkdir($Dir, 0777, true); + try { + // 1. 로그 저장 경로 설정 (프로젝트 루트의 logs 폴더) + $logBaseDir = __DIR__ . '/logs'; + $Dir = $logBaseDir . '/'; + + // 2. 폴더가 없으면 생성 + if (!is_dir($Dir)) { + if (!mkdir($Dir, 0777, true) && !is_dir($Dir)) { + error_log("Failed to create log directory: $Dir"); + return; + } + chmod($Dir, 0777); // 권한 명시적 설정 + } + + // 3. 파일명 결정 + $logFile = $Dir . date('Y-m-d') . '.log'; + + // 4. 로그 포맷팅 (시간 [레벨] 메시지) + $timestamp = date('Y-m-d H:i:s'); + $singleLineMessage = str_replace(["\r", "\n", "\t"], " ", $message); + $formattedMessage = "[$timestamp] [$level] $singleLineMessage" . PHP_EOL; + + // 5. 파일 기록 + $result = file_put_contents($logFile, $formattedMessage, FILE_APPEND | LOCK_EX); + + if ($result === false) { + error_log("Failed to write log file: $logFile"); + } else { + chmod($logFile, 0666); // 로그 파일 권한 설정 + } + } catch (Exception $e) { + error_log("writeLog Exception: " . $e->getMessage()); } - - // 3. 파일명 결정 (예: logs/2025/12/2025-12-22.log) - $logFile = $Dir . date('Y-m-d') . '.log'; - // 4. 로그 포맷팅 (시간 [레벨] 메시지) - $timestamp = date('Y-m-d H:i:s'); - - $singleLineMessage = str_replace(["\r", "\n", "\t"], " ", $message); - - $formattedMessage = "[$timestamp] [$level] $singleLineMessage" . PHP_EOL; - - // 5. 파일 기록 (FILE_APPEND로 기존 내용 뒤에 추가) - file_put_contents($logFile, $formattedMessage, FILE_APPEND); } // 도우미 함수 정의