|
@@ -189,7 +189,7 @@ class CLog {
|
|
|
$sql = "create table if not exists `$key` (`row` INT(11) NOT NULL AUTO_INCREMENT COMMENT '自增行号', `msg` TEXT NULL COMMENT '错误消息内容', PRIMARY KEY (`row`)) COLLATE='utf8_general_ci' ENGINE=InnoDB;";
|
|
|
daoInst()->exec($sql); # 创建表
|
|
|
$data = array();
|
|
|
- array_map(function($v) use(&$data) {
|
|
|
+ array_map(function ($v) use (&$data) {
|
|
|
$s = daoInst()->quote($v);
|
|
|
$data[] = "(" . $s . ")";
|
|
|
}, $arr);
|
|
@@ -222,16 +222,67 @@ class CLog {
|
|
|
$row = $array[0];
|
|
|
$server_addr = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : "-";
|
|
|
$client_addr = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : "-";
|
|
|
- $str = "[" . $server_addr . "][$zoneid 区][" . date('Y-m-d H:i:s') # # 主机地址、分区、时间
|
|
|
- . "][" . $client_addr . "][" # # 客户端地址
|
|
|
+ $str = "[" . $server_addr . "][$zoneid 区][" . req()->oid . "]" # 请求主机ip地址、分区, uid
|
|
|
+ . "[" . date('Y-m-d H:i:s') . "][" . $client_addr . "][" # 时间, 客户端来源ip地址
|
|
|
. (isset($row['file']) ? CommUtil::str2UTF8(basename($row['file'])) : '-') # 所在文件名
|
|
|
- . ":" . (isset($row['line']) ? $row['line'] : "???")# # 所在行
|
|
|
- . "]" . (isset($tag) ? "[" . CommUtil::str2UTF8($tag) . "]" : "") #
|
|
|
- . "=> " . var_export($msg, true)# # 标签、内容
|
|
|
+ . ":" . (isset($row['line']) ? $row['line'] : "???")# # 所在行
|
|
|
+ . "]" . (isset($tag) ? "[" . CommUtil::str2UTF8($tag) . "]" : "") # 标签
|
|
|
+ . "=> " . var_export($msg, true)# # 内容
|
|
|
. PHP_EOL;
|
|
|
return $str;
|
|
|
}
|
|
|
|
|
|
+// </editor-fold>
|
|
|
+//
|
|
|
+// <editor-fold defaultstate="collapsed" desc="优化后的文件日志(引入cache)">
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 写入文件日志
|
|
|
+ * @global \loyalsoft\type $zoneid
|
|
|
+ * @param type $type
|
|
|
+ * @param type $msg
|
|
|
+ * @return type
|
|
|
+ */
|
|
|
+ private static function fileLog($type, $msg) {
|
|
|
+ $fileName = self::GetDir($type) . date('Ymd') . ".log"; # 日志文件名(按天分割)
|
|
|
+ $fd = fopen($fileName, "a");
|
|
|
+ if (is_array($msg) || is_object($msg)) {
|
|
|
+ $msg = JsonUtil::encode($msg);
|
|
|
+ }
|
|
|
+ global $zoneid;
|
|
|
+ fputs($fd, "[" . self::dtCurrent() . "] $zoneid 区, " . $msg . "\r\n");
|
|
|
+ fclose($fd);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static $cache = array();
|
|
|
+
|
|
|
+ private static function output2($type, $msg) {
|
|
|
+ if (!isset(self::$cache[$type])) {
|
|
|
+ self::$cache[$type] = array();
|
|
|
+ }
|
|
|
+ if (is_array($msg) || is_object($msg)) {
|
|
|
+ $msg = JsonUtil::encode($msg);
|
|
|
+ }
|
|
|
+ global $zoneid;
|
|
|
+ self::$cache[$type][] = "[" . self::dtCurrent() . "] $zoneid 区, " . $msg . "\r\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ private static function flushFileCache() {
|
|
|
+ if (is_array(self::$cache)) {
|
|
|
+ foreach (self::$cache as $t => $varr) {
|
|
|
+ $fileName = self::GetDir($t) . date('Ymd') . ".log"; # 日志文件名(按天分割)
|
|
|
+ $fd = fopen($fileName, "a");
|
|
|
+ if (is_array($varr)) {
|
|
|
+ foreach ($varr as $msg) {
|
|
|
+ fputs($fd, $msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fclose($fd);
|
|
|
+ }
|
|
|
+ self::$cache = array();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// </editor-fold>
|
|
|
//
|
|
|
// 避免异常导致缓存丢失, 付费模块的日志直接写入文件
|