diff --git a/src/Logging/ErrorMessage.php b/src/Logging/ErrorMessage.php index e0b4d00..c952c69 100644 --- a/src/Logging/ErrorMessage.php +++ b/src/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/src/Logging/Logger/MessageLevel.php b/src/Logging/Logger/MessageLevel.php index c03033e..60bb271 100644 --- a/src/Logging/Logger/MessageLevel.php +++ b/src/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; diff --git a/test/phpunit/Logging/CoreLibsLoggingErrorMessagesTest.php b/test/phpunit/Logging/CoreLibsLoggingErrorMessagesTest.php index a92b444..ad2d606 100644 --- a/test/phpunit/Logging/CoreLibsLoggingErrorMessagesTest.php +++ b/test/phpunit/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,