[php] CodeIgniter (PHP)에서 오류 로깅을 수행하는 방법

PHP CodeIgniter에서 오류 로깅을 원합니다. 오류 로깅을 활성화하려면 어떻게합니까?

질문이 몇 개 있습니다:

  1. 오류를 기록하는 모든 단계는 무엇입니까?
  2. 오류 로그 파일은 어떻게 생성됩니까?
  3. 오류 메시지를 로그 파일에 푸시하는 방법 (오류가 발생할 때마다)?
  4. 오류를 이메일 주소로 어떻게 이메일로 보내나요?



답변

CodeIgniter에는 몇 가지 오류 로깅 기능이 내장되어 있습니다.

  • / application / logs 폴더를 쓰기 가능하게 만드십시오.
  • 에서 /application/config/config.php 세트
    $config['log_threshold'] = 1;
    당신이 당신의 로그에서 원하는 얼마나 많은 세부 사항에 따라, 높은 숫자를 사용하거나
  • 사용하다 log_message('error', 'Some variable did not contain a value.');
  • 이메일을 보내려면 핵심 CI_Exceptions 클래스 메소드를 확장해야합니다 log_exceptions(). 당신이 자신을하거나 사용할 수 있습니다 . 여기 에서 코어 확장에 대한 자세한 정보

참조 http://www.codeigniter.com/user_guide/general/errors.html를


답변

서버의 오류 로그에 한 줄만 넣으려면 PHP의 error_log () 함수를 사용하십시오. 그러나이 방법은 이메일을 보내지 않습니다.

먼저 오류를 트리거하려면 :

trigger_error("Error message here", E_USER_ERROR);

기본적으로 이것은 서버의 오류 로그 파일에 저장됩니다. Apache에 대한 ErrorLog 지시문 을 참조하십시오 . 고유 한 로그 파일을 설정하려면 :

ini_set('error_log', 'path/to/log/file');

선택한 로그 파일은 이미 존재해야하며 서버 프로세스에서 쓸 수 있어야합니다. 파일을 쓰기 가능하게 만드는 가장 간단한 방법은 서버 사용자를 파일의 소유자로 만드는 것입니다. (서버 사용자는 OS 배포에 따라 nobody, _www, apache 또는 다른 것일 수 있습니다.)

오류를 이메일로 보내려면 사용자 지정 오류 처리기를 설정해야합니다.

function mail_error($errno, $errstr, $errfile, $errline) {
  $message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
  error_log($message); // writes the error to the log file
  mail('you@yourdomain.com', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

자세한 정보 는 관련 PHP 문서 를 참조하십시오.


답변

또한 codeigniter가 구성 파일에 원하는 메시지 유형을 기록하도록 허용했는지 확인하십시오.

$config['log_threshold'] = [log_level ranges 0-4];


답변

4 번 질문에 대한 추가 정보 해당 오류를 이메일 주소로 어떻게 이메일로 보내나요? error_log 함수에는 이메일 대상도 있습니다.
http://php.net/manual/en/function.error-log.php

Agha, 여기서 사용법을 보여주는 예를 찾았습니다.
error_log ()를 사용하여 이메일을 통해 오류 메시지 보내기

error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL);


답변

In config.php add or edit the following lines to this:
------------------------------------------------------
$config['log_threshold'] = 4; // (1/2/3)
$config['log_path'] = '/home/path/to/application/logs/';

Run this command in the terminal:
----------------------------------
sudo chmod -R 777 /home/path/to/application/logs/


답변