直接上代码
php" id="highlighter_500490">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
<?php //exceptionHandle.php xiecongwen 20140620 //define('DEBUG',true); /** * Display all errors when APPLICATION_ENV is development. */ if (defined( 'DEBUG' )) { error_reporting (E_ALL); ini_set ( "display_errors" , 1); } if (!defined( 'DEBUG' )){ /** * 当发生重大错误时 写日志 并友好提示用户 * (PS:只所以将代码写在这里,是因为在其他地方注册时,出现问题无法调用配置函数.待完善...) */ function shutdownHandler() { /** * 写日志 此处直接写在根目录下shutdownlog.txt */ $lasterror = error_get_last(); if ( $lasterror ){ $error = strval ( date ( "Y-m-d h:i:s" )). '=>' . "[SHUTDOWN] lvl:" . $lasterror [ 'type' ] . " | msg:" . $lasterror [ 'message' ] . " | file:" . $lasterror [ 'file' ] . " | ln:" . $lasterror [ 'line' ]. "\n" ; file_put_contents ( './log/' . date ( "Ymd" ). 'shutdownlog.txt' , $error ,FILE_APPEND); //友好提示用户 ob_end_clean(); die ( '对不起,我出错了!' ); } } register_shutdown_function( 'shutdownHandler' ); } if (!defined( 'DEBUG' )){ function errorHandler( $errno , $errstr = '' , $errfile = '' , $errline = 0) { //写日志 $exception = new \ErrorException( $errstr , 0, $errno , $errfile , $errline ); $msg = strval ( date ( "Y-m-d h:i:s" )). '=>' . 'Type:' .getErrTypeName( $errno ). ' ' .getMsg( $exception ); file_put_contents ( './log/' . date ( "Ymd" ). 'error.txt' , $msg ,FILE_APPEND); switch ( $errno ) { case E_NOTICE: return ; case E_DEPRECATED: return ; } throw $exception ; } function getErrTypeName( $errno ) { switch ( $errno ) { case E_NOTICE: return 'E_NOTICE' ; case E_DEPRECATED: return 'E_DEPRECATED' ; default : return $errno ; } } function exceptionHandler( $ex ) { $msg = strval ( date ( "Y-m-d h:i:s" )). '=>' .getMsg( $ex ); file_put_contents ( './log/' . date ( "Ymd" ). 'exception.txt' , $msg ,FILE_APPEND); } function getMsg( $exception ) { //获取最准确的异常 while ( $exception ->getPrevious()) $exception = $exception ->getPrevious(); $msg = ' Message: ' . $exception ->getMessage(); $msg .= ' File: ' . $exception ->getFile(). ':' . $exception ->getLine(). "\n" ; return $msg ; } set_error_handler( 'errorHandler' ,E_ALL); set_exception_handler( 'exceptionHandler' ); } ?> |