카테고리 없음

CodeIgniter 로그(Log) 기록하기

광82 2023. 7. 11. 21:52
반응형

설명


코드이그나이터(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);

 

반응형