본문 바로가기
Language/php

[PHP] 텍스트(.txt) 파일로 로그 남기기

by pin9___9 2023. 9. 26.
728x90

이번에 회사에 제휴 서비스가 추가 되면서 메일을 보내는 로그를 남겨달라는 지시가 내려왔습니다.

DB에 저장할 수 있지만 자주 로그를 생성할 시 DB에 부하를 줄 수 있다는 글을 본 적이 있는 것 같아 txt파일을 만들어 로그를 남겨보려 합니다!

 

코드

function logSave($log){ 
    // 로그 저장할 dir 경로
    $logPathDir = "/consulting_log";  

    // 지정 dir에 현재 년/월 경로로 지정
    $filePath = $logPathDir."/".date("Y")."/".date("n");
    $folderYear = date("Y"); // 연도
    $folderMonth = date("n"); // 월

    // 해당 연도 폴더가 없을 경우 777권한으로 생성
    if(!is_dir($logPathDir."/".$folderYear)){
        mkdir($logPathDir."/".$folderYear, 0777);
    }
     
    // 해당 월 폴더가 없을 경우 777권한으로 생성
    if(!is_dir($logPathDir."/".$folderYear."/".$folderMonth)){
        mkdir(($logPathDir."/".$folderYear."/".$folderMonth), 0777);
    }
        //append 쓰기 전용 파일로 오픈 
        $log_file = fopen($logPathDir."/".$folderYear."/".$folderMonth."/".date("Ymd").".txt", "a"); 
        // log 작성
        fwrite($log_file, $log."\r\n");
        // 로그 파일 닫기
        fclose($log_file);
}

위 함수를 메일 전송 함수에서 실행시키면 로그가 쌓이는 것을 확인 할 수 있습니다!

 

+ 추가

fopen 함수 의 파일 접근 모드

모드 설명
r 읽기(read) 전용으로 파일을 오픈
파일이 없거나 찾을 수 없을 경우 호출 실패
w 쓰기(write) 전용으로 파일을 오픈
지정한 파일명이 있는 경우 : 파일 내용을 모두 지우고 새로 만듦
지정한 파일명이 없는 경우 : 새로운 파일을 생성

a 추가(append) 쓰기 전용 파일을 오픈
지정한 파일이 있으면 파일의 끝부터 내용을 추가
r+ 파일을 읽고 쓰기 위해 오픈
• 지정한 파일이 있는 경우 : 기존의 내용을 덮어씀
지정한 파일이 없는 경우 : 새로운 파일을 생성해서 데이터를 씀 (저장)

w+ 파일을 읽고 쓰기 위해 오픈
지정한 파일이 있는 경우 : 파일의 내용을 모두 지우고 새 파일을 만듦
지정한 파일이 없는 경우 : 새로운 파일을 생성

a+ 파일을 읽고 추가 쓰기 위해 오픈
지정한 파일이 있으면 파일의 끝부터 내용을 추가
나머지 기능은 r+와 동일

728x90

댓글