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


92

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

질문이 몇 개 있습니다:

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

답변:


180

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를



이것에 대한 보안 의미가 있습니까?
Aakil Fernandes

이렇게하면 파일 이름이 log- [Ymd H : i : s] 형식이거나 구성 파일에 정의 된 log_date_format 키 구성에 설정된 값이있는 php 파일로 데이터를 덤프합니다. 민감한 데이터를 기록 / 덤프하지 않는 한 꽤 안전 할 것입니다. 이 파일은 기본적으로 index.html 페이지에 상대적이므로 분명히 생성 된 php 파일은 공개적으로 액세스 할 수 없지만 알 수는 없습니다. 기본 application / logs 디렉토리를 변경하는 경우이 모든 예방 조치를 갖추고 있는지 확인하십시오.
Vincent Edward Gedaria Binua

7
확인하여 / 응용 프로그램 / 로그 폴더에 쓰기 <<< 내게 도움이
user1312695을

"$ config [ 'log_threshold'] = 1;"을 설정했을 때 / application / logs 폴더에 로그가 없습니다. 하지만 "$ config [ 'log_threshold'] = 3"로 설정하면 로그 파일이 나타납니다. 도움이 되었기를 바랍니다. 감사합니다! 평화.
masarapmabuhay 2011

25

서버의 오류 로그에 한 줄만 넣으려면 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 문서 를 참조하십시오.


3

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

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


1

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);

0
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/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.