로그인 회원가입
모두인포
전체IT경제사회생활스포츠시사여행연애

PHP 로그(log)

lmkfox · 2025-08-14 · 조회 0
PHP 로그(log)
1. PHP에서 로그의 기본 개념 - 로그(Log): 실행 중인 프로그램의 상태나 이벤트를 기록한 정보. - PHP에서는 주로 에러 로그와 사용자 정의 로그를 남길 수 있습니다. - 로그 출력 위치는 PHP 설정(php.ini)에서 지정하거나, 코드에서 직접 지정할 수 있습니다. 2. PHP 에러 로그 설정 에러 로그는 PHP의 php.ini 파일에서 설정합니다. ; 에러 로그 활성화 log_errors = On ; 에러 로그 파일 경로 지정 (절대 경로 권장) error_log = /var/log/php_errors.log ; 표시할 에러 수준 (모든 에러 기록) error_reporting = E_ALL - log_errors: 로그 기록 여부 (On이면 기록) - error_log: 로그 파일 경로 - error_reporting: 기록할 에러 수준 - E_ALL: 모든 에러 - E_ERROR | E_WARNING: 심각한 오류와 경고만 기록 php.ini를 수정한 후에는 웹 서버(Apache, Nginx 등)를 재시작해야 적용됩니다. 3. 런타임에서 로그 설정 변경 php.ini를 수정할 수 없는 경우 코드에서 변경할 수도 있습니다. ini_set('log_errors', 1); ini_set('error_log', '/var/log/php_errors.log'); error_reporting(E_ALL); 4. 에러 로그 예시 <?php // 존재하지 않는 파일 읽기 (경고 발생) $file = file_get_contents('not_exist.txt'); ?> - 로그 파일(/var/log/php_errors.log)에 다음과 같이 기록될 수 있음: [14-Aug-2025 10:15:32 UTC] PHP Warning: file_get_contents(not_exist.txt): Failed to open stream: No such file or directory in /var/www/html/test.php on line 3 5. 사용자 정의 로그 작성 PHP에서 직접 로그를 남기고 싶다면 error_log() 함수를 사용합니다. <?php // 기본 에러 로그 파일에 기록 error_log("이것은 기본 로그 파일에 남기는 테스트 메시지"); // 별도의 파일에 기록 error_log("이것은 별도 파일에 기록", 3, "/var/log/custom.log"); ?> - 첫 번째 인자: 로그 메시지 - 두 번째 인자: 메시지 타입 - 0: PHP 시스템 로그에 기록 (기본값) - 3: 지정한 파일에 추가 기록 - 세 번째 인자: 파일 경로(타입이 3일 때 필요) 6. 웹 서버 로그와 PHP 로그 - Apache/Nginx 에러 로그: PHP 에러가 웹 서버 에러 로그에 함께 기록될 수 있음. - 예: Apache에서 error_log 디렉티브를 사용하여 /var/log/apache2/error.log에 PHP 오류가 함께 저장. 7. 실전 팁 - 운영 환경에서는 에러를 화면에 출력하지 말고 반드시 로그로만 남길 것. display_errors = Off log_errors = On - - 로그 파일 권한은 웹 서버 계정이 쓸 수 있게 설정 (chown, chmod 활용). - 로그 파일이 너무 커지면 로테이션(logrotate) 설정 필요. - 중요한 사용자 활동, API 요청, 보안 이벤트 등은 커스텀 로그로 별도 파일에 관리. 8. 간단한 커스텀 로거 예시 <?php function write_log($message, $file = '/var/log/custom_app.log') { $date = date('Y-m-d H:i:s'); $formatted = "[{$date}] {$message}\n"; file_put_contents($file, $formatted, FILE_APPEND); } // 사용 예시 write_log("사용자가 로그인 시도"); write_log("DB 연결 실패"); ?>

댓글

아직 댓글이 없습니다.

로그인 후 댓글을 남길 수 있습니다.