안녕하세요 워누입니다.

 

오늘은 그동안 포스팅했던 mkdir, fopen, fclose, fwrite 등을 활용해서 프로그램을 실행한 내용과 전달받은 데이터 등을 기록하는 로그파일을 만들어보는 방법을 포스팅 해보겠습니다. 

 

직전 포스팅에서 언급했던 것처럼 로그파일을 만드는 것은 개발자에게 꽤 중요한 작업이에요. 

귀찮더라도 초급 개발자분들은 이 과정을 꼭 한번씩 거쳐보시는 것을 권장합니다!

 

그럼 바로 시작해보겠습니다!

로그파일은 보통 프로그램 실행 중 정상 혹은 오류에 대한 기록을 잡기 위해 많이 사용합니다. 

그래서 보통 어떤 프로그램을 써먹어볼까 하다가 PHP로 간단한 계산기를 만들고, 계산기록을 메모장에 남겨보는 형태로 진행해보면 되겠다 싶어 바로 html로 요청 페이지를 만들고, php로 응답하도록 로직을 구성해 보았습니다! 

 


Code :: request.html 

<html>
<head>
 <title> PHP 계산기 TEST </title>
</head>
<body>
 <form method="post" action="response.php">
  사칙 연산 : 
  <select name="Calculator">
    <option value="Addition" selected>더하기</option>
    <option value="Subtraction">빼기</option>
    <option value="Multiplication">곱하기</option>
    <option value="Division">나누기</option>
  </select>
  <br>
  첫번째 숫자 : 
  <input type="text" name="FirstNum" value="" /><br>
  두번째 숫자 : 
  <input type="text" name="SecondNum" value="" /><br>
  <input type="submit" value="Submit" />
 </form>
</body>
</html>

UI :: request.html

request.html


일단은 간단하게 두개의 수만 받아서 더할 것인지, 뺄 것인지, 곱할 것인지, 나눌 것인지를 구성해보았습니다. 

요청은 이렇게 구성하고, 다음은 결과를 구성한 코드와 화면을 볼까요?

 


Code :: Response.php

<?php 

//전달받은 데이터를 변수로 저장 
$Calc = $_POST['Calculator'];
$num1 = $_POST['FirstNum'];
$num2 = $_POST['SecondNum'];

//계산한 두 수의 결과값을 저장할 변수 선언
$result = "";

//오늘의 날짜를 변수로 저장 
$logDate = date("Ymd");

//log 폴더 생성 
$dirName = "log";
$isDir = is_dir($dirName);

if($isDir){					//log 폴더가 존재하는 경우
	opendir($dirName);		//log 폴더 열기
} else {					//그렇지 않으면
	mkdir($dirName);		//"log" 폴더 새로 만들기
}

//로그파일 생성. 파일명은 오늘날짜. 
$fileName = $logDate.".log";

//로그파일 열기 
$fp = fopen("./log/".$fileName, 'a+');

//로그파일 기록 시작.
fwrite( $fp,"************************************************\r\n");
fwrite( $fp,"계산시작일시	: ".date("YmdHis")."\r\n");
fwrite( $fp,"num1		: ".$num1."\r\n");
fwrite( $fp,"num2		: ".$num2."\r\n");
fwrite( $fp,"연산기호		: ".$Calc."\r\n");

//사칙연산(+,-,*,/) 요청 값에 따라 구분하여 처리.
switch($Calc){
	case("Addition"):
		$result = $num1+$num2;
		break;
	case("Subtraction"):
		$result = $num1-$num2;
		break;
	case("Multiplication"):
		$result = $num1*$num2;
		break;
	case("Division"):
		$result = $num1/$num2;
		break;
}

//계산결과를 화면에 전달.		
echo "계산결과 :".$result."<br>";

fwrite( $fp,"결과		: ".$result."\r\n");
fwrite( $fp,"************************************************\r\n");

//로그파일 종료
fclose($fp);
?>

UI :: response.php

response.php


요청한 계산에 대한 결과를 이렇게 확인할 수 있었습니다!

계산은 제대로 되었는데 과연 로그 파일은 잘 작성되었는지 한번 보겠습니다. 

 

1. 계산 요청 전 php_prac 폴더의 상태.

기존의 폴더 상태

2. 계산 요청 후 php_prac 폴더의 상태.

더하기 계산 후 폴더 상태

3. log 폴더 상태.

log 폴더 상태 -> log파일이 정상적으로 생성됨.

일단 결과적으로도 잘 생성이 되었네요! 

그럼 로그폴더 안의 txt도 잘 기록되었는지 봅시다. 

 

더보기

************************************************
계산시작일시 : 20210125004605
num1 : 2
num2 : 5
연산기호 : Addition
결과 : 7
************************************************

20200125.log 안의 내용물을 그대로 복사해서 가져왔습니다. 

해당 로그 기록의 요청은 response.php 파일 내 fwrite()부분을 그대로 기재한 것을 볼수가 있네요! 

결과적으로 요청 값을 잘 기록했고, log파일이 생성된 시간과 log폴더 안에

계산 시작일시 시간도 일치하는 것을 볼수 있습니다!

 

혹시나 몰라 1분 내로 곱셈도 한번 더 진행했습니다. 

request.html
response.php

역시나 웹 페이지에 결과가 잘 기재되었네요!

그럼 아까 폴더 경로로 가서 파일이 잘 생성되었는지 봅시다. 

log 폴더 -> 수정한 날짜에 찍힌 시간이 46분에서 47분으로 바뀜

일단, 시간이 업데이트 된걸로 봐서 기록이 잘된것 같네요!

그럼 안의 내용물은 어떤지 한번 볼까요?

더보기

************************************************
계산시작일시 : 20210125004605
num1 : 2
num2 : 5
연산기호 : Addition
결과 : 7
************************************************
************************************************
계산시작일시 : 20210125004750
num1 : 9
num2 : 10
연산기호 : Multiplication
결과 : 90
************************************************

안의 내용물도 잘 업데이트 되었네요! 

계산시작일시가 47분 50초로 적혀 있습니다! 

 

이렇게 로그 파일을 잘 남겨두면, 내가 프로그램을 실행한 시간과 요청했던 데이터,

프로그램 실행 시 이슈 등을 파악하는데 매우 용이하게 사용할 수 있습니다. 

 

로그파일 형식은 굳이 저렇게 안하고 개발자 본인이 작성하고 싶은대로,

그러나 필요한 내용은 반드시 기재하는 용도로 체크해두시면 나중에 조금 더 깊게 개발하실 때 큰 도움이 되리라 생각해봅니다. 

 

오늘 포스팅한 내용도 읽어주신 여러분께 도움이 되길 바라며, 여기서 마치겠습니다! 

감사합니다 ㅎㅎ

+ Recent posts