>  기사  >  백엔드 개발  >  PHP 출력 로그

PHP 출력 로그

不言
不言원래의
2018-04-17 09:02:4216275검색

이 기사의 내용은 특정 참조 값이 있는 PHP 출력 로그에 관한 것입니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구들은 참조할 수 있습니다

https://www.cnblogs.com/yszr에서 재인쇄했습니다. /p /8489433.html
error_log('출력하려는 ​​정보', 3, 'E:workjiajiayueApplicationApiController1.txt');die;
php error_log 로그 사용 및 구성 기록


PHP 개발자의 경우 특정 시간에 한 번 제품을 사용하게 되면 이러한 오류로 인해 공개되는 경로, 데이터베이스 연결, 데이터 테이블 및 기타 정보로 인해 해커의 공격을 피하기 위해 display_errors 옵션을 즉시 꺼야 합니다. 하지만 어떤 제품을 사용하고 나면 필연적으로 오류가 발생하기 마련인데, 개발자에게 유용한 일부 오류 보고서를 기록하는 방법은 무엇일까요? 별도의 텍스트 파일에 오류 보고서를 기록할 수 있습니다. 오류 로그 기록은 개발자나 관리자가 시스템에 문제가 있는지 확인하는 데 도움이 될 수 있습니다. 프로그램의 오류 보고서를 오류 로그에 기록해야 하는 경우 PHP 구성 파일에서 log_errors 구성 지시어를 켜면 됩니다. 오류 보고서는 기본적으로 웹 서버의 로그 파일(예: Apache 서버의 오류 로그 파일 error.log)에 기록됩니다. 물론 오류 로그를 지정된 파일에 기록하거나 시스템 syslog에 보낼 수도 있습니다. 세부 사항은 다음과 같습니다.


1 지정된 파일을 사용하여 오류 보고서 로그를 기록합니다


오류 보고서 로그를 기록하려면 지정된 파일을 사용하십시오. 오류 보고서 로그는 지정된 파일을 사용하여 오류 로그를 기록합니다. 공격받을 가능성을 줄이기 위해 문서 루트 디렉터리 외부에 저장합니다. 그리고 파일은 PHP 스크립트를 실행하는 사용자(웹 서버 프로세스의 소유자)가 작성해야 합니다. Linux 운영 체제에서는 /usr/local/ 디렉터리의 error.log 파일이 오류 로그 파일로 사용되고 웹 서버 프로세스 사용자에게 쓰기 권한이 설정되어 있다고 가정합니다. 그런 다음 PHP 구성 파일에서 error_log 지시문의 값을 오류 로그 파일의 절대 경로로 설정합니다.
php.ini의 구성 지침을 다음과 같이 수정해야 합니다.
1. error_reporting = E_ALL ; 발생하는 모든 오류는 PHP에 보고됩니다.
2.display_errors = Off Report
3. log_errors = On                                            사용   사용 사용 사용 using using ‐ ''s'' 사용       ‐ ‐‐‐‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐  ‐         ; 로그 파일 위치
PHP 구성 파일을 위와 같이 지정하고 웹 서버를 다시 시작하세요. 이런 방식으로 PHP 스크립트 파일을 실행할 때 생성된 모든 오류 보고서는 브라우저에 표시되지 않지만 사용자가 지정한 오류 로그 /usr/local/error.log에 기록됩니다. 또한, error_reporting으로 정의된 규칙을 만족하는 모든 오류를 기록할 수 있을 뿐만 아니라, PHP의 error_log() 함수를 사용하여 사용자가 정의한 오류 메시지를 보낼 수도 있습니다.


이 함수의 프로토타입은 다음과 같습니다.

1. bool error_log ( string message [, int message_type [, string Destination [, string extra_headers]]] )

이 함수는 send 오류 정보는 웹 서버, TCP 서버의 오류 로그 파일 또는 지정된 파일로 전송됩니다. 이 함수는 성공하면 TRUE를, 실패하면 FALSE를 반환합니다. 첫 번째 매개변수 메시지는 필수이며 전송되는 오류 메시지입니다. 이 매개변수만 사용하는 경우 구성 파일 php.ini에 설정된 위치로 메시지가 전송됩니다. 두 번째 매개변수 message_type은 정수 값입니다. 0은 이를 운영 체제의 로그로 보내는 것을 의미하고, 1은 PHP의 Mail() 함수를 사용하여 메시지를 이메일 주소로 보내고, 네 번째 매개변수 extra_headers도 사용됩니다. 이때 세 번째 매개변수인 Destination은 대상 IP와 Port를 나타냅니다. 3. 해당 정보를 파일 대상에 저장합니다.


오라클 데이터베이스에 로그인하는 문제를 예로 들면, 이 함수의 사용법은 다음과 같습니다.




1. <?php      
2.     if(!Ora_Logon($username, $password)){     
 3.         error_log("Oracle数据库不可用!", 0);        //将错误消息写入到操作系统日志中   
4.     }   
5.     if(!($foo=allocate_new_foo()){   
6.         error_log("出现*烦了!", 1, ". mydomain.com");   //发送到管理员邮箱中   
7.     }  
8.     error_log("搞砸了!",   2,   "localhost:5000");     //发送到本机对应5000端口的服务器中   
9.     error_log("搞砸了!",   3,   "/usr/local/errors.log");  //发送到指定的文件中   
10. ?>





2. 운영체제 로그에 오류 정보가 기록됩니다


운영체제 로그에 오류 정보가 기록됩니다. . 오류 보고 운영 체제 로그에 기록될 수도 있지만 로그 관리는 운영 체제마다 약간 다릅니다. Linux에서는 오류 설명이 syslog로 전송되고, Windows에서는 오류가 이벤트 로그로 전송됩니다. syslog에 익숙하지 않다면 최소한 시스템 및 애플리케이션 실행과 관련된 메시지를 기록하는 API를 제공하는 UNIX 기반 로깅 도구라는 점은 알아 두십시오. Windows 이벤트 로그는 실제로 UNIX syslog와 동일하며 이러한 로그는 일반적으로 이벤트 뷰어를 통해 볼 수 있습니다. 운영 체제 로그에 오류 보고서를 쓰려면 구성 파일에서 error_log 지시문의 값을 syslog로 설정할 수 있습니다.


php.ini에서 수정해야 하는 특정 구성 지침은 다음과 같습니다.


1. error_reporting  =  E_ALL                   ;将会向PHP报告发生的每个错误   
2. display_errors = Off                            ;不显示 满足上条指令所定义规则的所有错误报告   
3. log_errors = On                             ;决定日志语句记录的位置   
4. log_errors_max_len = 1024                   ;设置每个日志项的最大长度   
5. error_log = syslog                          ;指定产生的错误报告写入操作系统的日志里




PHP에서는 일반 오류 출력 외에도 사용자 정의 메시지를 시스템 syslog로 보낼 수도 있습니다. 앞서 소개한 error_log() 함수를 통해 사용자 정의된 메시지를 syslog로 보낼 수도 있지만, PHP는 이 기능을 위해 함께 사용해야 하는 네 가지 전용 함수를 제공합니다.


은 다음과 같이 소개됩니다.


define_syslog_variables()


이 함수는 openlog(), syslog 및 closelog() 세 가지 함수를 사용하기 전에 호출되어야 합니다. 왜냐하면 이 함수가 호출되면 현재 시스템 환경에 따라 다음 세 가지 함수에 필요한 일부 상수가 초기화되기 때문입니다.


openlog()


현재 시스템의 로거에 대한 연결을 열어 시스템에 로그 메시지를 삽입할 준비를 합니다. 그리고 제공된 첫 번째 문자열 매개변수를 각 로그 메시지에 삽입하세요. 또한 이 함수는 로그 컨텍스트에서 사용될 두 개의 매개변수를 지정해야 합니다. 사용하려면 공식 문서를 참조하세요.


syslog()


이 함수는 시스템 로그에 사용자 정의된 메시지를 보냅니다. 두 개의 필수 매개변수가 필요합니다. 첫 번째 매개변수는 상수를 지정하여 메시지의 우선순위를 사용자 정의합니다. 예를 들어, LOG_WARNING은 일반적인 경고를 나타내고, LOG_EMERG는 시스템 충돌을 나타낼 수 있는 심각한 문제를 나타내며, 공식 문서에 따라 심각도를 나타내는 다른 상수를 사용할 수 있습니다. 두 번째 매개변수는 시스템 로그로 전송되는 사용자 정의 메시지입니다. 런타임 시 PHP 엔진에서 제공하는 메시지 문자열 또는 오류 문자열을 제공해야 합니다.


closelog()


이 함수는 시스템 로그에 사용자 정의된 메시지를 보낸 후 호출되며 openlog() 함수로 열린 로그 연결을 닫습니다.





구성 파일에서 사용자 정의 메시지를 syslog로 보내는 명령이 활성화되어 있는 경우 앞서 소개한 4가지 기능을 사용하여 시스템 로그에 경고 메시지를 보내고, syslog 구문 분석 도구를 통해 이를 볼 수 있습니다. 시스템 그리고 아래와 같이 PHP 프로그램에서 보낸 사용자 정의 메시지를 분석합니다.


1.  
2.     define_syslog_variables();   
3.     openlog("PHP5", LOG_PID , LOG_USER);   
4.     syslog(LOG_WARNING, "警告报告向syslog中发送的演示, 警告时间:".date("Y/m/d H:i:s"));  
5.     closelog();   
6. ?>

Windows 시스템을 예로 들어 "내 컴퓨터"를 마우스 오른쪽 버튼으로 클릭하여 관리 옵션을 선택한 다음 시스템 도구 메뉴에서 이벤트 보기 탐색기를 선택한 다음 애플리케이션 옵션을 찾으면 사용자 정의된 경고 메시지를 볼 수 있습니다. 위 코드는 이벤트의 일부인 시스템의 syslog 파일에 다음과 유사한 메시지를 생성합니다.


1. PHP5[3084], syslog에 경고 보고서를 보내는 데모, 경고 시간: 2009/03/ 26 04:09:11.


지정된 파일을 사용할지, syslog를 사용하여 오류 로그를 기록할지 여부는 웹 서버 환경에 따라 다릅니다. 웹 서버를 제어할 수 있는 경우 syslog 구문 분석 도구를 사용하여 로그를 보고 분석할 수 있으므로 syslog를 사용하는 것이 이상적입니다. 그러나 웹사이트가 공유 서버의 가상 호스트에서 실행되고 있는 경우 별도의 텍스트 파일을 사용하여 오류 로그를 기록할 수 있습니다.
         

관련 추천:

php는 모든 시간대 목록을 출력합니다

php는 로그 기능을 작성합니다

php는 로그 기능을 구현합니다

위 내용은 PHP 출력 로그의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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