@@ -37,14 +37,19 @@ class JAPI
37
37
private static $ obj_config = NULL ;
38
38
39
39
/**
40
- * @var null
40
+ * @var JAPI\Router
41
41
*/
42
- private static $ flt_startup = NULL ;
42
+ private static $ obj_router = NULL ;
43
43
44
44
/**
45
- * @var \Docnet\ JAPI\Router
45
+ * @var JAPI\Logger
46
46
*/
47
- private static $ obj_router = NULL ;
47
+ private $ obj_logger = NULL ;
48
+
49
+ /**
50
+ * @var null|float
51
+ */
52
+ private static $ flt_startup = NULL ;
48
53
49
54
/**
50
55
* When creating a new JAPI, hook up the shutdown function and set Config
@@ -82,7 +87,6 @@ public function run()
82
87
* Custom shutdown function
83
88
*
84
89
* @todo Consider checking if headers have already been sent
85
- * @todo Consider checking isLive before outputting message
86
90
*/
87
91
public function timeToDie ()
88
92
{
@@ -115,17 +119,19 @@ protected function jsonError($mix_message = NULL, $int_code = 500)
115
119
header ($ _SERVER ["SERVER_PROTOCOL " ] . " 500 Internal Server Error " , TRUE , 500 );
116
120
}
117
121
if ($ mix_message instanceof \Exception) {
118
- $ str_message = (self ::getConfig ()->isLive () ? 'Exception ' : get_class ($ mix_message ) . ': ' . $ mix_message ->getMessage ());
122
+ $ str_log = get_class ($ mix_message ) . ': ' . $ mix_message ->getMessage ();
123
+ $ str_message = self ::getConfig ()->isLive () ? 'Exception ' : $ str_log ;
119
124
} elseif (is_string ($ mix_message )) {
120
- $ str_message = $ mix_message ;
125
+ $ str_log = $ str_message = $ mix_message ;
121
126
} else {
122
- $ str_message = 'Unknown error ' ;
127
+ $ str_log = $ str_message = 'Unknown error ' ;
123
128
}
124
129
header ('Content-type: application/json ' );
125
130
echo json_encode (array (
126
131
'response ' => (int )$ int_code ,
127
132
'msg ' => $ str_message
128
133
));
134
+ $ this ->log (LOG_ERR , "[JAPI exiting with {$ int_code }] " . $ str_log );
129
135
exit ();
130
136
}
131
137
@@ -137,7 +143,7 @@ protected function jsonError($mix_message = NULL, $int_code = 500)
137
143
public static function getRouter ()
138
144
{
139
145
if (NULL === self ::$ obj_router ) {
140
- self ::$ obj_router = new \ Docnet \ JAPI \Router ();
146
+ self ::$ obj_router = new JAPI \Router ();
141
147
}
142
148
return self ::$ obj_router ;
143
149
}
@@ -147,7 +153,7 @@ public static function getRouter()
147
153
*
148
154
* @param JAPI\Interfaces\Router $obj_router
149
155
*/
150
- public function setRouter (\ Docnet \ JAPI \Interfaces \Router $ obj_router )
156
+ public function setRouter (JAPI \Interfaces \Router $ obj_router )
151
157
{
152
158
self ::$ obj_router = $ obj_router ;
153
159
}
@@ -176,4 +182,28 @@ public static function getDuration($int_dp = 4)
176
182
return round (microtime (TRUE ) - self ::$ flt_startup , $ int_dp );
177
183
}
178
184
185
+ /**
186
+ * Log to the current Logger, create one if needed
187
+ *
188
+ * @param $int_level
189
+ * @param $str_message
190
+ */
191
+ protected function log ($ int_level , $ str_message )
192
+ {
193
+ if (NULL === $ this ->obj_logger ) {
194
+ $ this ->obj_logger = new JAPI \Logger ();
195
+ }
196
+ $ this ->obj_logger ->log ($ int_level , $ str_message );
197
+ }
198
+
199
+ /**
200
+ * Set a custom Logger
201
+ *
202
+ * @param JAPI\Interfaces\Logger $obj_logger
203
+ */
204
+ public function setLogger (JAPI \Interfaces \Logger $ obj_logger )
205
+ {
206
+ $ this ->obj_logger = $ obj_logger ;
207
+ }
208
+
179
209
}
0 commit comments