diff --git a/.phive/phars.xml b/.phive/phars.xml index b782b52a..e1f29fd0 100644 --- a/.phive/phars.xml +++ b/.phive/phars.xml @@ -1,9 +1,9 @@ - - - - + + + + diff --git a/4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php b/4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php index a92b4445..ad2d606c 100644 --- a/4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php +++ b/4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php @@ -230,6 +230,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'ERROR MESSAGE', 'message' => null, 'log_error' => null, + 'log_warning' => null, 'expected' => ' ERROR MESSAGE', ], 'error, logged' => [ @@ -238,6 +239,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'ERROR MESSAGE', 'message' => null, 'log_error' => true, + 'log_warning' => null, 'expected' => ' ERROR MESSAGE', ], 'error, logged, message' => [ @@ -246,14 +248,43 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'ERROR MESSAGE', 'message' => 'OTHER ERROR MESSAGE', 'log_error' => true, + 'log_warning' => null, 'expected' => ' OTHER ERROR MESSAGE', ], + 'warn, not logged' => [ + 'id' => '300', + 'level' => 'warn', + 'str' => 'WARNING MESSAGE', + 'message' => null, + 'log_error' => null, + 'log_warning' => null, + 'expected' => ' WARNING MESSAGE', + ], + 'warn, logged' => [ + 'id' => '300', + 'level' => 'warn', + 'str' => 'WARNING MESSAGE', + 'message' => null, + 'log_error' => null, + 'log_warning' => true, + 'expected' => ' WARNING MESSAGE', + ], + 'warn, logged, message' => [ + 'id' => '300', + 'level' => 'warn', + 'str' => 'WARNING MESSAGE', + 'message' => 'OTHER WARNING MESSAGE', + 'log_error' => null, + 'log_warning' => true, + 'expected' => ' OTHER WARNING MESSAGE', + ], 'notice' => [ 'id' => '100', 'level' => 'notice', 'str' => 'NOTICE MESSAGE', 'message' => null, 'log_error' => null, + 'log_warning' => null, 'expected' => ' NOTICE MESSAGE', ], 'notice, message' => [ @@ -262,6 +293,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'NOTICE MESSAGE', 'message' => 'OTHER NOTICE MESSAGE', 'log_error' => null, + 'log_warning' => null, 'expected' => ' OTHER NOTICE MESSAGE', ], 'crash' => [ @@ -270,6 +302,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'CRASH MESSAGE', 'message' => null, 'log_error' => null, + 'log_warning' => null, 'expected' => ' CRASH MESSAGE', ], 'crash, message' => [ @@ -278,6 +311,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'CRASH MESSAGE', 'message' => 'OTHER CRASH MESSAGE', 'log_error' => null, + 'log_warning' => null, 'expected' => ' OTHER CRASH MESSAGE', ], 'abort' => [ @@ -286,6 +320,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'ABORT MESSAGE', 'message' => null, 'log_error' => null, + 'log_warning' => null, 'expected' => ' ABORT MESSAGE', ], 'abort, message' => [ @@ -294,6 +329,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'ABORT MESSAGE', 'message' => 'OTHER ABORT MESSAGE', 'log_error' => null, + 'log_warning' => null, 'expected' => ' OTHER ABORT MESSAGE', ], 'unknown' => [ @@ -302,6 +338,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'WRONG LEVEL MESSAGE', 'message' => null, 'log_error' => null, + 'log_warning' => null, 'expected' => ' WRONG LEVEL MESSAGE', ], 'unknown, message' => [ @@ -310,6 +347,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase 'str' => 'WRONG LEVEL MESSAGE', 'message' => 'OTHER WRONG LEVEL MESSAGE', 'log_error' => null, + 'log_warning' => null, 'expected' => ' OTHER WRONG LEVEL MESSAGE', ], ]; @@ -326,6 +364,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase * @param string $str * @param string|null $message * @param bool|null $log_error + * @param bool|null $log_warning * @param string $expected * @return void */ @@ -335,6 +374,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase string $str, ?string $message, ?bool $log_error, + ?bool $log_warning, string $expected ): void { $log = new \CoreLibs\Logging\Logging([ @@ -349,7 +389,8 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase $level, $str, message: $message, - log_error: $log_error + log_error: $log_error, + log_warning: $log_warning ); $file_content = ''; if (is_file($log->getLogFolder() . $log->getLogFile())) { @@ -363,6 +404,11 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase $expected, $file_content ); + } elseif ($level == 'warn' && ($log_warning === null || $log_warning === false)) { + $this->assertStringNotContainsString( + $expected, + $file_content + ); } else { $this->assertStringContainsString( $expected, @@ -382,6 +428,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase * @param string $str * @param string|null $message * @param bool|null $log_error + * @param bool|null $log_warning * @param string $expected * @return void */ @@ -391,6 +438,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase string $str, ?string $message, ?bool $log_error, + ?bool $log_warning, string $expected ): void { $log = new \CoreLibs\Logging\Logging([ @@ -405,7 +453,8 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase $level, $str, message: $message, - log_error: $log_error + log_error: $log_error, + log_warning: $log_warning ); $file_content = ''; if (is_file($log->getLogFolder() . $log->getLogFile())) { @@ -419,6 +468,11 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase $expected, $file_content ); + } elseif ($level == 'warn' && $log_warning === false) { + $this->assertStringNotContainsString( + $expected, + $file_content + ); } else { $this->assertStringContainsString( $expected, diff --git a/tools/phpcbf b/tools/phpcbf index fc00260a..a592750a 120000 --- a/tools/phpcbf +++ b/tools/phpcbf @@ -1 +1 @@ -/home/clemens/.phive/phars/phpcbf-3.10.0.phar \ No newline at end of file +/home/clemens/.phive/phars/phpcbf-3.10.3.phar \ No newline at end of file diff --git a/tools/phpcs b/tools/phpcs index fb17a133..26632b89 120000 --- a/tools/phpcs +++ b/tools/phpcs @@ -1 +1 @@ -/home/clemens/.phive/phars/phpcs-3.10.0.phar \ No newline at end of file +/home/clemens/.phive/phars/phpcs-3.10.3.phar \ No newline at end of file diff --git a/tools/phpstan b/tools/phpstan index b259f518..77d91210 120000 --- a/tools/phpstan +++ b/tools/phpstan @@ -1 +1 @@ -/home/clemens/.phive/phars/phpstan-1.11.1.phar \ No newline at end of file +/home/clemens/.phive/phars/phpstan-1.12.4.phar \ No newline at end of file diff --git a/tools/phpunit b/tools/phpunit index 74a7cd10..3e46cd1d 120000 --- a/tools/phpunit +++ b/tools/phpunit @@ -1 +1 @@ -/home/clemens/.phive/phars/phpunit-9.6.19.phar \ No newline at end of file +/home/clemens/.phive/phars/phpunit-9.6.21.phar \ No newline at end of file diff --git a/www/admin/class_test.error_msg.php b/www/admin/class_test.error_msg.php index f3398c6e..2cf777c2 100644 --- a/www/admin/class_test.error_msg.php +++ b/www/admin/class_test.error_msg.php @@ -45,6 +45,8 @@ $em->setErrorMsg('123', 'error', 'msg this is bad, auto logged if debug'); $em->setErrorMsg('123', 'error', 'msg this is bad, auto logged if debug', 'target-id', 'other-style'); $em->setErrorMsg('123', 'error', 'msg this is bad, logged always', log_error:true); $em->setErrorMsg('123', 'error', 'msg this is bad, never logged', log_error:false); +$em->setErrorMsg('500', 'warning', 'This is perhaps not super good, logged_always', log_warning:true); +$em->setErrorMsg('500', 'warning', 'This is perhaps not super good, logged_never', log_warning:false); $em->setErrorMsg('1000', 'info', 'This is good'); $em->setErrorMsg('9999', 'abort', 'BAD: This is critical (abort)'); $em->setErrorMsg('10-1000', 'wrong', 'Wrong level: This is emergency'); diff --git a/www/lib/CoreLibs/Logging/ErrorMessage.php b/www/lib/CoreLibs/Logging/ErrorMessage.php index e0b4d001..c952c69e 100644 --- a/www/lib/CoreLibs/Logging/ErrorMessage.php +++ b/www/lib/CoreLibs/Logging/ErrorMessage.php @@ -24,16 +24,20 @@ class ErrorMessage /** @var bool $log_error global flag to log error level message */ private bool $log_error = false; + /** @var bool $log_warning global flat to log warning level messages */ + private bool $log_warning = false; /** * init ErrorMessage * * @param \CoreLibs\Logging\Logging $log * @param null|bool $log_error [=null], defaults to false if log is not level debug + * @param null|bool $log_warning [=null], defaults to false if log is not level debug */ public function __construct( \CoreLibs\Logging\Logging $log, - ?bool $log_error = null + ?bool $log_error = null, + ?bool $log_warning = null ) { $this->log = $log; // if log default logging is debug then log_error is default set to true @@ -43,6 +47,13 @@ class ErrorMessage $log_error = $log_error ?? false; } $this->log_error = $log_error; + // if log default logging is debug then log_warning is default set to true + if ($this->log->loggingLevelIsDebug() && $log_warning === null) { + $log_warning = true; + } else { + $log_warning = $log_warning ?? false; + } + $this->log_warning = $log_warning; } /** @@ -81,6 +92,8 @@ class ErrorMessage * @param array $context Additionl info for abort/crash messages * @param bool|null $log_error [=null] log level 'error' to error, if null use global, * else set for this call only + * @param bool|null $log_warning [=null] log level 'warning' to warning, if null use global, + * else set for this call only */ public function setErrorMsg( string $error_id, @@ -93,10 +106,14 @@ class ErrorMessage ?string $message = null, array $context = [], ?bool $log_error = null, + ?bool $log_warning = null, ): void { if ($log_error === null) { $log_error = $this->log_error; } + if ($log_warning === null) { + $log_warning = $this->log_warning; + } $original_level = $level; $level = MessageLevel::fromName($level)->name; // if not string set, write message string if set, else level/error id @@ -121,6 +138,14 @@ class ErrorMessage 'level' => $original_level, ], $context)); break; + case 'warn': + if ($log_warning) { + $this->log->warning($message ?? $str, array_merge([ + 'id' => $error_id, + 'level' => $original_level, + ], $context)); + } + break; case 'error': if ($log_error) { $this->log->error($message ?? $str, array_merge([ @@ -169,6 +194,8 @@ class ErrorMessage * @param array $context Additionl info for abort/crash messages * @param bool|null $log_error [=null] log level 'error' to error, if null use global, * else set for this call only + * @param bool|null $log_warning [=null] log level 'warning' to warning, if null use global, + * else set for this call only */ public function setMessage( string $level, @@ -181,6 +208,7 @@ class ErrorMessage ?string $message = null, array $context = [], ?bool $log_error = null, + ?bool $log_warning = null, ): void { $this->setErrorMsg( $error_id ?? '', @@ -192,7 +220,8 @@ class ErrorMessage $jump_target, $message, $context, - $log_error + $log_error, + $log_warning ); } @@ -314,6 +343,27 @@ class ErrorMessage { return $this->log_error; } + + /** + * Set the log warning flag + * + * @param bool $flag True to log level warning too, False for do not (Default) + * @return void + */ + public function setFlagLogWarning(bool $flag): void + { + $this->log_warning = $flag; + } + + /** + * Get the current log error flag + * + * @return bool + */ + public function getFlagLogWarning(): bool + { + return $this->log_warning; + } } // __END__ diff --git a/www/lib/CoreLibs/Logging/Logger/MessageLevel.php b/www/lib/CoreLibs/Logging/Logger/MessageLevel.php index c03033e1..60bb2717 100644 --- a/www/lib/CoreLibs/Logging/Logger/MessageLevel.php +++ b/www/lib/CoreLibs/Logging/Logger/MessageLevel.php @@ -14,7 +14,7 @@ namespace CoreLibs\Logging\Logger; enum MessageLevel: int { case ok = 100; - case success = 110; // special for file uploads + case success = 150; // special for file uploads case info = 200; case notice = 250; case warn = 300;