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 | <?php class S { static function log($message, $file=null) { $date = date('Y-m-d H:i:s'); $_message = "[{$date}]"; if(is_object($message)){ $_message .= get_class($message); }elseif(is_null($message) || is_bool($message)){ $_message .= var_export($message, true); }elseif(is_array($message)){ $_message .= print_r($message, true); }else{ $_message .= $message; } if(is_null($file)){ $file = 'msg.log'; }else{ $file = (string)$file; } file_put_contents($file, $_message."\n", FILE_APPEND); } public static function logTrace() { self::log(self::getTrace()); } public static function getTrace() { $trace = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT); //ignore args unset($trace[0]); $records = ''; foreach($trace as $key => $record){ $records .= "\r\n#$key "; if(isset($record['class']) && isset($record['type']) && isset($record['file']) && isset($record['line'])){ $records .= $record['file']. "({$record['line']}) => {$record['class']}{$record['type']}{$record['function']}"; }elseif(isset($record['file']) && isset($record['line'])){ $records .= $record['file']. "({$record['line']}) => {$record['function']}"; }else{ $records .= print_r($record, true); } } return $records; } } |