a tiny mvc framework for php using php-activerecord
at master 88 lines 1.9 kB view raw
1<?php 2/* 3 logging utilities 4*/ 5 6namespace HalfMoon; 7 8class Log { 9 static function error($string) { 10 if (isset(Config::instance()->log_handler)) 11 call_user_func(Config::instance()->log_handler . "::error", 12 $string); 13 else 14 error_log($string); 15 } 16 17 static function info($string) { 18 if (isset(Config::instance()->log_handler)) 19 call_user_func(Config::instance()->log_handler . "::info", 20 $string); 21 else 22 error_log($string); 23 } 24 25 static function warn($string) { 26 if (isset(Config::instance()->log_handler)) 27 call_user_func(Config::instance()->log_handler . "::warn", 28 $string); 29 else 30 error_log($string); 31 } 32 33 /* print_r() to the error log */ 34 static function error_log_r($param) { 35 if (isset(Config::instance()->log_handler)) 36 call_user_func(Config::instance()->log_handler . "::error_log_r", 37 $param); 38 else 39 array_map("error_log", explode("\n", print_r($param, true))); 40 } 41} 42 43class ActiveRecordLogger { 44 private $logging_queries; 45 private $logging_values; 46 47 function __construct($log_level = -1) { 48 if ($log_level == -1) 49 $log_level = Config::$DEFAULT_ACTIVERECORD_LOG_LEVEL; 50 51 $this->logging_queries = false; 52 $this->logging_values = false; 53 54 if ($log_level >= Config::$LOG_LEVELS["short"]) 55 $this->logging_queries = true; 56 57 if ($log_level >= Config::$LOG_LEVELS["full"]) 58 $this->logging_values = true; 59 } 60 61 function log($sql, &$values = array()) { 62 if (!$this->logging_queries) 63 return; 64 65 $sql = trim(preg_replace("/[\t\n]+/", " ", $sql)); 66 67 if ($this->logging_values) { 68 $x = 0; 69 $sql = preg_replace_callback("/(\?)/", function($s) 70 use (&$x, &$values) { 71 $r = ""; 72 if ($values[$x] === NULL) 73 $r = "NULL"; 74 else 75 $r = "'" . str_replace("'", "\\'", $values[$x]) . "'"; 76 77 $x++; 78 return $r; 79 }, trim(preg_replace("/[\t\n]+/", " ", $sql))); 80 81 reset($values); 82 } 83 84 Log::info(" " . $sql); 85 } 86} 87 88?>