diff options
Diffstat (limited to 'classes/logger')
-rw-r--r-- | classes/logger/adapter.php | 4 | ||||
-rwxr-xr-x | classes/logger/sql.php | 12 | ||||
-rw-r--r-- | classes/logger/stdout.php | 6 | ||||
-rw-r--r-- | classes/logger/syslog.php | 6 |
4 files changed, 17 insertions, 11 deletions
diff --git a/classes/logger/adapter.php b/classes/logger/adapter.php new file mode 100644 index 000000000..79f641441 --- /dev/null +++ b/classes/logger/adapter.php @@ -0,0 +1,4 @@ +<?php +interface Logger_Adapter { + function log_error(int $errno, string $errstr, string $file, int $line, $context); +}
\ No newline at end of file diff --git a/classes/logger/sql.php b/classes/logger/sql.php index ad7fdecb2..d21934aa6 100755 --- a/classes/logger/sql.php +++ b/classes/logger/sql.php @@ -1,17 +1,15 @@ <?php -class Logger_SQL { +class Logger_SQL implements Logger_Adapter { private $pdo; - function log_error($errno, $errstr, $file, $line, $context) { + function log_error(int $errno, string $errstr, string $file, int $line, $context) { // separate PDO connection object is used for logging if (!$this->pdo) $this->pdo = Db::instance()->pdo_connect(); if ($this->pdo && get_schema_version() > 117) { - $owner_uid = $_SESSION["uid"] ?? null; - // limit context length, DOMDocument dumps entire XML in here sometimes, which may be huge $context = mb_substr($context, 0, 8192); @@ -34,10 +32,14 @@ class Logger_SQL { $errstr = UConverter::transcode($errstr, 'UTF-8', 'UTF-8'); $context = UConverter::transcode($context, 'UTF-8', 'UTF-8'); + // can't use $_SESSION["uid"] ?? null because what if its, for example, false? or zero? + // this would cause a PDOException on insert below + $owner_uid = !empty($_SESSION["uid"]) ? $_SESSION["uid"] : null; + $sth = $this->pdo->prepare("INSERT INTO ttrss_error_log (errno, errstr, filename, lineno, context, owner_uid, created_at) VALUES (?, ?, ?, ?, ?, ?, NOW())"); - $sth->execute([$errno, $errstr, $file, $line, $context, $owner_uid]); + $sth->execute([$errno, $errstr, $file, (int)$line, $context, $owner_uid]); return $sth->rowCount(); } diff --git a/classes/logger/stdout.php b/classes/logger/stdout.php index 4dac2e598..e906853ce 100644 --- a/classes/logger/stdout.php +++ b/classes/logger/stdout.php @@ -1,7 +1,7 @@ <?php -class Logger_Stdout { +class Logger_Stdout implements Logger_Adapter { - function log_error($errno, $errstr, $file, $line, $context) { + function log_error(int $errno, string $errstr, string $file, int $line, $context) { switch ($errno) { case E_ERROR: @@ -21,7 +21,7 @@ class Logger_Stdout { $priority = LOG_INFO; } - $errname = Logger::$errornames[$errno] . " ($errno)"; + $errname = Logger::ERROR_NAMES[$errno] . " ($errno)"; print "[EEE] $priority $errname ($file:$line) $errstr\n"; diff --git a/classes/logger/syslog.php b/classes/logger/syslog.php index f1e151548..3ad9858f3 100644 --- a/classes/logger/syslog.php +++ b/classes/logger/syslog.php @@ -1,7 +1,7 @@ <?php -class Logger_Syslog { +class Logger_Syslog implements Logger_Adapter { - function log_error($errno, $errstr, $file, $line, $context) { + function log_error(int $errno, string $errstr, string $file, int $line, $context) { switch ($errno) { case E_ERROR: @@ -21,7 +21,7 @@ class Logger_Syslog { $priority = LOG_INFO; } - $errname = Logger::$errornames[$errno] . " ($errno)"; + $errname = Logger::ERROR_NAMES[$errno] . " ($errno)"; syslog($priority, "[tt-rss] $errname ($file:$line) $errstr"); |