Files
FloatBackOfffice/CRONS/common/Logger.php
T
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

104 lines
3.0 KiB
PHP

<?php
require __DIR__ . '../../../vendor/autoload.php';
class Logger
{
protected static $instance;
private static $logger;
const ERROR = 0;
const WARNING = 1;
const INFO = 2;
const DEBUG = 3;
const DEBUG1 = 4;
const DEBUG2 = 5;
const DEBUG3 = 6;
const DEBUG4 = 7;
const SQL = 8;
const FLOG_MAX = 9;
const LEVELS = [
'ERROR', 'WARNING', 'INFO', 'DEBUG', 'DEBUG1', 'DEBUG2', 'DEBUG3', 'DEBUG4', 'SQL', 'FLOG_MAX'
];
public function __construct()
{
}
public static function getLogger()
{
if (!self::$instance) {
self::initLogger();
}
return self::$instance;
}
public static function initLogger()
{
global $savvyext;
$fluent_host = $savvyext->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);
}
}
}