cfgReadChar('phplogger.host'); $fluent_port = $savvyext->cfgReadLong('phplogger.port'); $log_enabled = $savvyext->cfgReadLong('phplogger.enabled'); if ($log_enabled == 1) { self::$logger = new Fluent\Logger\FluentLogger($fluent_host, $fluent_port); } self::$instance = self::$logger; } public static function __callStatic($name, $arguments){ if(is_array($arguments) && count($arguments)>0 && in_array(strtoupper($name), Logger::LEVELS)) { $data = $arguments[0]; $name = NULL; $tag = NULL; if (count($arguments)>1) { $name = $arguments[1]; } if (count($arguments)>2) { $tag = $arguments[2]; } $level = Logger::levelByName($name); return Logger::log($level, $data, $name, $tag); } error_log("Logger::__callStatic($name, \$arguments) => Invalid method name!"); } public static function levelByName($name) { $val = strtoupper($name); if(in_array($val, Logger::LEVELS)) { return array_search($val, Logger::LEVELS, false); } else { return Logger::FLOG_MAX; } } public static function nameByLevel($level) { $level = (int)$level; return Logger::ERROR < $level || $level > Logger::FLOG_MAX ? Logger::LEVELS[Logger::FLOG_MAX] : Logger::LEVELS[$level]; } public static function log($level, $data = [], $name = NULL, $tag = NULL) { global $savvyext; $clevel = $savvyext->cfgReadLong('phplogger.level'); $ilevel = (int)$level; if ($ilevel > $clevel) { error_log("Logger::log() invalid log level! '$level' => '$ilevel' > '$clevel'"); return; } $tag = $tag ?? $savvyext->cfgReadChar('phplogger.tag'); $name = $name ?? $savvyext->cfgReadChar('phplogger.name'); $data = [ "log" => $name, "level" => Logger::nameByLevel($level), "pid" => getmypid(), "zz" => is_array($data) || is_object($data) ? json_encode($data) : $data, ]; if (self::getLogger()) { self::getLogger()->post($tag, $data); } } }