>  기사  >  백엔드 개발  >  PHP error_log() 함수 사용 소개

PHP error_log() 함수 사용 소개

怪我咯
怪我咯원래의
2017-07-10 14:28:451577검색

error_log() 함수는 서버 오류 로그, 파일 또는 원격 대상에 오류 메시지를 보냅니다. 구문

error_log(message,type,destination,headers);
parameters description
message 이 필요합니다. 기록할 오류 메시지를 지정합니다.
type

선택사항입니다. 오류를 어디로 보내야 하는지 지정합니다. 가능한 값:

  • 0 - 기본값. 메시지는 php.ini의 error_log 지시문에 따라 운영 체제의 로깅 메커니즘이나 파일을 사용하여 PHP의 시스템 로그로 전송됩니다.

  • 1 - 메시지는 destination 매개변수에 설정된 이메일 주소로 전송됩니다. 네 번째 매개변수 extra_headers는 이 유형에만 사용됩니다.

  • 2 - 더 이상 사용되지 않음(PHP 3에서만 사용됨)

  • 3 - 메시지는 destination에 있는 파일로 전송됩니다. message 문자는 기본적으로 새 줄로 처리되지 않습니다.

  • 4 - 메시지가 SAPI 로그 핸들러로 직접 전송됩니다.

destination 선택사항. 오류 메시지의 대상을 지정합니다. 이 값은 type 매개변수 값에 따라 결정됩니다.
헤더

선택사항입니다. From, Cc 및 Bcc와 같은 추가 헤더를 지정합니다. 이 메시지 유형은 mail()과 동일한 내장 기능을 사용합니다.

message_type이 1로 설정된 경우에만 사용됩니다.

CRLF(rn)는 여러 헤더를 구분하는 데 사용해야 합니다.

사실 우리 입장에서는 단순함을 위해 일반적으로 유형 3을 로그에 직접 사용하고 필요한 파일에 로그 파일을 쓰는 것이 더 적합합니다.

error_log() 함수의 간단한 사용법을 설명하기 위해 예를 들어보겠습니다. 우리 데이터베이스 추상 클래스가 PEAR::DB 클래스를 사용한다고 가정합니다. 이제 프로그램에 실행 오류가 있는지 기록하고 싶습니다. 그런 다음 error_log()를 사용하여 SQL 문의 실행 오류나 실패를 기록합니다. 적어도 PEAR::DB 클래스는 실행 결과 개체에 오류가 있는지 확인하기 위한 DB::isError() 메서드를 제공합니다. 특정 SQL 문을 실행하는 동안 오류가 발생했는지 확인한 다음 로그를 기록할지 여부를 고려할 수 있습니다. 동시에 개체에는 잘못된 SQL 문을 기록하는 userinfo 속성이 있습니다.

function logError($object)
{
 if(DB::isError($object))
 {
  error_log(date("[Y-m-d H:i:s]")." -[".$_SERVER['REQUEST_URI']."] :".$object -> userinfo."\n", 3, "/tmp/php_sql_err.log");
  return true;
 }
 return false;
}

이 함수는 잘못된 SQL이 발견되면 시간, 현재 페이지 및 잘못된 SQL 문 정보를 자동으로 /tmp/php_sql_err.log 파일에 기록합니다. 그런 다음 프로그램을 디버깅할 때, 데이터 추출이 잘못된 것을 발견했습니다. 또는 데이터 추출이 없으면 /tmp/php_sql_err.log 파일을 보고 오류 페이지와 잘못된 SQL 문을 볼 수 있습니다.

물론, SQL 쿼리를 실행하는 프로그램에서 이 함수를 사용해야 합니다. 예를 들어 뉴스 정보를 추출하는 함수를 작성한다면:

function getNewsContent($news_id, $field="")
{
 global $db;
 $result = $db->getRow("SELECT $field FROM news WHERE news_id = '$news_id'");
 if (logError($result))
 {
  return false;
 }
 return $result;
}

SQL이 잘못된지 확인하고, 잘못된 경우 반환합니다. false이면 로그를 확인하여 함수가 예상대로 실행되는지 확인할 수 있습니다.
tail /tmp/php_sql_err.log를 실행합니다.
다음과 유사한 정보를 볼 수 있습니다.

[2006-01-12 11:44:34] -[/news_list.php?news_id=1] :SELECT FROM news WHERE news_id = '1' [nativecode=1064 ** SQL 구문에 오류가 있습니다. 'FROM news WHERE news_id = '1' ] 근처에서 사용할 올바른 구문에 대해서는 MySQL 서버 버전에 해당하는 설명서를 확인하세요.

이는 아마도 우리가 선택했을 때 추출해야 하는 필드 이름을 작성하지 않았기 때문일 것입니다. 그러면 news_list.php 파일을 확인하여 getNewsContent() 함수 메소드가 $field 매개변수를 전달하지 않는다는 것을 알 수 있습니다. 이로 인해 SQL 실행 오류가 발생합니다. 따라서 error_log() 함수는 SQL이 올바르게 작성되었는지, 매개변수가 올바르게 전달되지 않았는지 확인하는 데 도움이 됩니다. 이를 통해 개발 부담이 크게 줄어들고 프로그램에서

단위 테스트를 수행할 수 있습니다.

물론, PHP 개발을 용이하게 하기 위해 error_log() 함수를 사용하여 더 많은 오류 로그를 기록할 수도 있습니다.


이번 작업에서는 간단한 로그를 기록하는데 사용했습니다


<code>
            $address    = post(&#39;address&#39;);
            $group_add  = explode(&#39;,&#39;,$address);

            $url   ="/usr/local/apache/eyoung/tmp/maillog_".date("Y-m-d").".log";

            foreach($group_add as $value)
            {
                    /** {{{ modify by muzhaoyang -2006.12.13- 记log
                      *  已空格分隔数据,记录的数据为写文本时间 拉票人ID 选手ID 发信地址
                      */
                      $logstr=date("H:i:s")." ".$uid." ".$star_uid." ".$value."\n";
                      error_log($logstr,3,$url);
                    //}}}
             }

</code>


위 내용은 PHP error_log() 함수 사용 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.