-
[CodeIgniter] 로그(Log) 기록하기프로그래밍/CodeIgniter 2019. 1. 15. 13:39
▶CodeIgniter 로그(Log) 기록하기
▶설명
코드이그나이터(CodeIgniter)에서 에러나 정보에 대한 로그(Log)를 기록하는 함수를 제공하고 있습니다.
자세한 내용은 아래의 링크를 참고하여 주시기 바랍니다.
▶사용법
log_message 함수
강조 처리된 부분만 필수 사항입니다.
log_message(로그 레벨, 메세지, PHP 에러 = FALSE )
- 로그 레벨 : 문자열
- 메세지 : 문자열
- PHP 에러 : Boolean
로그 레벨 (Log Level)
로그 레벨은 기본적으로 3가지가 있습니다.
- error : Error 메세지 - PHP 에러 또는 사용자 에러에 대한 메세지
- debug : Debug 메세지 - 디버그를 도와주는 메세지. 클래스 초기화 정보 등을 기록할 수 있습니다.
- info : Informational 메세지 - 가장 하위 레벨의 메세지.
사용법만으로는 설명이 부족하기 때문에 예제에서 설명하도록 하겠습니다.
로그 쓰레스홀드(Log Threshold) 설정
application/config/config.php
/* |-------------------------------------------------------------------------- | Error Logging Threshold |-------------------------------------------------------------------------- | | You can enable error logging by setting a threshold over zero. The | threshold determines what gets logged. Threshold options are: | | 0 = Disables logging, Error logging TURNED OFF | 1 = Error Messages (including PHP errors) | 2 = Debug Messages | 3 = Informational Messages | 4 = All Messages | | You can also pass an array with threshold levels to show individual error types | | array(2) = Debug Messages, without Error Messages | | For a live site you'll usually only enable Errors (1) to be logged otherwise | your log files will fill up very fast. | */ $config['log_threshold'] = 4;
설명
주석에 설명이 모두 작성되어 있으므로 간단하게 설명하도록 하겠습니다.
- 0 : 로그 비활성화. 로그를 기록하지 않습니다.
- 1 : Error 메세지 기록
- 2 : Debug 메세지 기록 (Error 메세지 포함)
- 3 : Informational 메세지 기록 (Error, Debug 포함)
- 4 : 모든 메세지 기록.
저희는 테스트를 위해 일단은 4로 설정하도록 하겠습니다.
※ 주의 사항
application/log 폴더에 쓰기 권한이 있어야지만 로그가 기록됩니다!!!
▶예제
application/controllers/Log.php 를 추가하여 테스트하도록 하겠습니다.
코드
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Log extends CI_Controller { public function __construct() { parent::__construct(); } public function index() { log_message("error", "Error Message"); log_message("debug", "Debug Message"); log_message("info", "Informational Message"); } }
해당 코드를 실행하면 application/log 폴더에 "log-2019-01-15.php" 같이 현재 날짜로 된 로그 파일이 생성된 것을 확인할 수 있습니다.
이제 쓰레스홀드 값에 따른 차이를 알아보도록 하겠습니다.
application/config/config.php 파일에 $config['log_threshold'] 부분을 수정하며 확인해보도록 하겠습니다.
로그 쓰레스홀드 : 4
ERROR - 2019-01-15 03:33:42 --> Error Message DEBUG - 2019-01-15 03:33:42 --> Debug Message INFO - 2019-01-15 03:33:42 --> Informational Message
ERROR, DEBUG, INFO에 대한 로그가 모두 남은 것을 확인할 수 있습니다.
(그 외에 클래스 초기화, 페이지 실행 로그 등이 남을 수 있습니다.)
로그 쓰레스홀드 : 3
ERROR - 2019-01-15 03:35:41 --> Error Message DEBUG - 2019-01-15 03:35:41 --> Debug Message INFO - 2019-01-15 03:35:41 --> Informational Message
마찬가지로 ERROR, DEBUG, INFO에 대한 로그가 모두 남은 것을 확인할 수 있습니다.
로그 쓰레스홀드 : 2
ERROR - 2019-01-15 03:36:52 --> Error Message DEBUG - 2019-01-15 03:36:52 --> Debug Message
이번에는 ERROR, DEBUG에 대한 로그만 남은 것을 확인할 수 있습니다.
로그 쓰레스홀드 : 1
ERROR - 2019-01-15 03:39:14 --> Error Message
이번에는 ERROR에 대한 로그만 남은 것을 확인할 수 있습니다.
로그 쓰레스홀드 : 배열
만약에 Error 메세지를 포함하지 않고, Debug 메세지만을 출력하고 싶으시다고요?
그러면 로그 쓰레스홀드를 아래와 같이 설정하시면 됩니다.
application/config/config.php
$config['log_threshold'] = array(2);
로그 파일
DEBUG - 2019-01-15 03:44:28 --> Debug Message
Error 메세지를 제외하고, Debug 메세지만 기록된 것을 확인할 수 있습니다.
만약 Debug와 Info 메세지만 기록하고 싶다면 코드를 아래와 같이 변경하면 됩니다.
$config['log_threshold'] = array(2, 3);
▶마치며
코드이그나이터에서 로그를 기록하는 방법에 대해 알아보았습니다.
이제 코드이그나이터를 사용하면서 로그를 통해 좀 더 쉽게 디버깅을 진행할 수 있을 것입니다.
'프로그래밍 > CodeIgniter' 카테고리의 다른 글
[CodeIgniter] URL 규칙과 URI 가져오기 (0) 2019.01.22 [CodeIgniter] 로그 파일 분리하기 (로그 확장) (0) 2019.01.19 [CodeIgniter] 컨트롤러 확장 (Extending Controller) (0) 2018.12.18 [CodeIgniter] 언어 클래스(Language Class) - 다국어 (0) 2018.12.12 [CodeIgniter] JSON 반환 (0) 2018.11.16