diff options
author | Andrew Dolgov <[email protected]> | 2023-08-02 09:04:41 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2023-08-02 09:10:05 +0300 |
commit | 1d788eddf837117e5bdac83f19b28f3bfe440947 (patch) | |
tree | 72147fdfe2d9e6d394f45d9373098aac8d858c24 /classes/debug.php | |
parent | 3d255d861c1a146c4cae65a8e0e1ae51b19da70a (diff) |
* logger: add optional HTML output
* feed debugger: add checkbox to dump feed XML
Diffstat (limited to 'classes/debug.php')
-rw-r--r-- | classes/debug.php | 92 |
1 files changed, 57 insertions, 35 deletions
diff --git a/classes/debug.php b/classes/debug.php index 40fa27377..1cda12539 100644 --- a/classes/debug.php +++ b/classes/debug.php @@ -5,6 +5,8 @@ class Debug { const LOG_VERBOSE = 1; const LOG_EXTENDED = 2; + const SEPARATOR = "<-{log-separator}->"; + const ALL_LOG_LEVELS = [ Debug::LOG_DISABLED, Debug::LOG_NORMAL, @@ -35,6 +37,7 @@ class Debug { private static bool $enabled = false; private static bool $quiet = false; private static ?string $logfile = null; + private static bool $enable_html = false; private static int $loglevel = self::LOG_NORMAL; @@ -82,58 +85,77 @@ class Debug { } } + public static function enable_html(bool $enable) : void { + self::$enable_html = $enable; + } + /** * @param Debug::LOG_* $level log level */ public static function log(string $message, int $level = Debug::LOG_NORMAL): bool { - if (!self::$enabled || self::$loglevel < $level) return false; + if (!self::$enabled || self::$loglevel < $level) return false; + + $ts = date("H:i:s", time()); + if (function_exists('posix_getpid')) { + $ts = "$ts/" . posix_getpid(); + } + + $orig_message = $message; - $ts = date("H:i:s", time()); - if (function_exists('posix_getpid')) { - $ts = "$ts/" . posix_getpid(); - } + if ($message === self::SEPARATOR) { + $message = self::$enable_html ? "<hr/>" : + "================================================================================================================================="; + } - if (self::$logfile) { - $fp = fopen(self::$logfile, 'a+'); + if (self::$logfile) { + $fp = fopen(self::$logfile, 'a+'); - if ($fp) { - $locked = false; + if ($fp) { + $locked = false; - if (function_exists("flock")) { - $tries = 0; + if (function_exists("flock")) { + $tries = 0; - // try to lock logfile for writing - while ($tries < 5 && !$locked = flock($fp, LOCK_EX | LOCK_NB)) { - sleep(1); - ++$tries; - } + // try to lock logfile for writing + while ($tries < 5 && !$locked = flock($fp, LOCK_EX | LOCK_NB)) { + sleep(1); + ++$tries; + } - if (!$locked) { - fclose($fp); - user_error("Unable to lock debugging log file: " . self::$logfile, E_USER_WARNING); - return false; - } - } + if (!$locked) { + fclose($fp); + user_error("Unable to lock debugging log file: " . self::$logfile, E_USER_WARNING); + return false; + } + } - fputs($fp, "[$ts] $message\n"); + fputs($fp, "[$ts] $message\n"); - if (function_exists("flock")) { - flock($fp, LOCK_UN); - } + if (function_exists("flock")) { + flock($fp, LOCK_UN); + } - fclose($fp); + fclose($fp); - if (self::$quiet) - return false; + if (self::$quiet) + return false; - } else { - user_error("Unable to open debugging log file: " . self::$logfile, E_USER_WARNING); - } - } + } else { + user_error("Unable to open debugging log file: " . self::$logfile, E_USER_WARNING); + } + } - print "[$ts] $message\n"; + if (self::$enable_html) { + if ($orig_message === self::SEPARATOR) { + print "$message\n"; + } else { + print "<span class='log-timestamp'>$ts</span> <span class='log-message'>$message</span>\n"; + } + } else { + print "[$ts] $message\n"; + } return true; - } + } } |