ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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);


    ▶마치며


    코드이그나이터에서 로그를 기록하는 방법에 대해 알아보았습니다.

    이제 코드이그나이터를 사용하면서 로그를 통해 좀 더 쉽게 디버깅을 진행할 수 있을 것입니다.


    댓글

Designed by Tistory.