a tiny mvc framework for php using php-activerecord
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?>