-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
# -*- coding: utf-8 -*- | ||
/** | ||
* | ||
* (c) Inpsyde GmbH | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
* | ||
* @author AuthorName <hello@inpsyde.com> | ||
* @license GPLv2+ | ||
* @link https://www.inpsyde.com | ||
*/ | ||
|
||
namespace Inpsyde\Wonolog\Tests\TestLogger; | ||
|
||
use Psr\Log\LoggerInterface; | ||
use Psr\Log\LogLevel; | ||
|
||
abstract class AbstractLoggerV1 implements LoggerInterface | ||
{ | ||
/** | ||
* System is unusable. | ||
* | ||
* @param string $message | ||
* @param mixed[] $context | ||
* | ||
* @return void | ||
*/ | ||
public function emergency($message, array $context = array()) | ||
Check failure on line 33 in tests/src/TestLogger/AbstractLoggerV1.php GitHub Actions / coding-standards-analysis-php / coding-standards-php
|
||
{ | ||
$this->log(LogLevel::EMERGENCY, $message, $context); | ||
} | ||
|
||
/** | ||
* Action must be taken immediately. | ||
* | ||
* Example: Entire website down, database unavailable, etc. This should | ||
* trigger the SMS alerts and wake you up. | ||
* | ||
* @param string $message | ||
* @param mixed[] $context | ||
* | ||
* @return void | ||
*/ | ||
public function alert($message, array $context = array()) | ||
Check failure on line 49 in tests/src/TestLogger/AbstractLoggerV1.php GitHub Actions / coding-standards-analysis-php / coding-standards-php
|
||
{ | ||
$this->log(LogLevel::ALERT, $message, $context); | ||
} | ||
|
||
/** | ||
* Critical conditions. | ||
* | ||
* Example: Application component unavailable, unexpected exception. | ||
* | ||
* @param string $message | ||
* @param mixed[] $context | ||
* | ||
* @return void | ||
*/ | ||
public function critical($message, array $context = array()) | ||
Check failure on line 64 in tests/src/TestLogger/AbstractLoggerV1.php GitHub Actions / coding-standards-analysis-php / coding-standards-php
|
||
{ | ||
$this->log(LogLevel::CRITICAL, $message, $context); | ||
} | ||
|
||
/** | ||
* Runtime errors that do not require immediate action but should typically | ||
* be logged and monitored. | ||
* | ||
* @param string $message | ||
* @param mixed[] $context | ||
* | ||
* @return void | ||
*/ | ||
public function error($message, array $context = array()) | ||
Check failure on line 78 in tests/src/TestLogger/AbstractLoggerV1.php GitHub Actions / coding-standards-analysis-php / coding-standards-php
|
||
{ | ||
$this->log(LogLevel::ERROR, $message, $context); | ||
} | ||
|
||
/** | ||
* Exceptional occurrences that are not errors. | ||
* | ||
* Example: Use of deprecated APIs, poor use of an API, undesirable things | ||
* that are not necessarily wrong. | ||
* | ||
* @param string $message | ||
* @param mixed[] $context | ||
* | ||
* @return void | ||
*/ | ||
public function warning($message, array $context = array()) | ||
Check failure on line 94 in tests/src/TestLogger/AbstractLoggerV1.php GitHub Actions / coding-standards-analysis-php / coding-standards-php
|
||
{ | ||
$this->log(LogLevel::WARNING, $message, $context); | ||
} | ||
|
||
/** | ||
* Normal but significant events. | ||
* | ||
* @param string $message | ||
* @param mixed[] $context | ||
* | ||
* @return void | ||
*/ | ||
public function notice($message, array $context = array()) | ||
Check failure on line 107 in tests/src/TestLogger/AbstractLoggerV1.php GitHub Actions / coding-standards-analysis-php / coding-standards-php
|
||
{ | ||
$this->log(LogLevel::NOTICE, $message, $context); | ||
} | ||
|
||
/** | ||
* Interesting events. | ||
* | ||
* Example: User logs in, SQL logs. | ||
* | ||
* @param string $message | ||
* @param mixed[] $context | ||
* | ||
* @return void | ||
*/ | ||
public function info($message, array $context = array()) | ||
{ | ||
$this->log(LogLevel::INFO, $message, $context); | ||
} | ||
|
||
/** | ||
* Detailed debug information. | ||
* | ||
* @param string $message | ||
* @param mixed[] $context | ||
* | ||
* @return void | ||
*/ | ||
public function debug($message, array $context = array()) | ||
{ | ||
$this->log(LogLevel::DEBUG, $message, $context); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
# -*- coding: utf-8 -*- | ||
/** | ||
* | ||
* (c) Inpsyde GmbH | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
* | ||
* @author AuthorName <hello@inpsyde.com> | ||
* @license GPLv2+ | ||
* @link https://www.inpsyde.com | ||
*/ | ||
|
||
namespace Inpsyde\Wonolog\Tests\TestLogger; | ||
|
||
/** | ||
* Used for testing purposes. | ||
* | ||
* It records all records and gives you access to them for verification. | ||
* | ||
* @method bool hasEmergency($record) | ||
* @method bool hasAlert($record) | ||
* @method bool hasCritical($record) | ||
* @method bool hasError($record) | ||
* @method bool hasWarning($record) | ||
* @method bool hasNotice($record) | ||
* @method bool hasInfo($record) | ||
* @method bool hasDebug($record) | ||
* | ||
* @method bool hasEmergencyRecords() | ||
* @method bool hasAlertRecords() | ||
* @method bool hasCriticalRecords() | ||
* @method bool hasErrorRecords() | ||
* @method bool hasWarningRecords() | ||
* @method bool hasNoticeRecords() | ||
* @method bool hasInfoRecords() | ||
* @method bool hasDebugRecords() | ||
* | ||
* @method bool hasEmergencyThatContains($message) | ||
* @method bool hasAlertThatContains($message) | ||
* @method bool hasCriticalThatContains($message) | ||
* @method bool hasErrorThatContains($message) | ||
* @method bool hasWarningThatContains($message) | ||
* @method bool hasNoticeThatContains($message) | ||
* @method bool hasInfoThatContains($message) | ||
* @method bool hasDebugThatContains($message) | ||
* | ||
* @method bool hasEmergencyThatMatches($message) | ||
* @method bool hasAlertThatMatches($message) | ||
* @method bool hasCriticalThatMatches($message) | ||
* @method bool hasErrorThatMatches($message) | ||
* @method bool hasWarningThatMatches($message) | ||
* @method bool hasNoticeThatMatches($message) | ||
* @method bool hasInfoThatMatches($message) | ||
* @method bool hasDebugThatMatches($message) | ||
* | ||
* @method bool hasEmergencyThatPasses($message) | ||
* @method bool hasAlertThatPasses($message) | ||
* @method bool hasCriticalThatPasses($message) | ||
* @method bool hasErrorThatPasses($message) | ||
* @method bool hasWarningThatPasses($message) | ||
* @method bool hasNoticeThatPasses($message) | ||
* @method bool hasInfoThatPasses($message) | ||
* @method bool hasDebugThatPasses($message) | ||
*/ | ||
class TestLoggerV1 extends AbstractLoggerV1 | ||
{ | ||
/** | ||
* @var array | ||
*/ | ||
public $records = []; | ||
|
||
public $recordsByLevel = []; | ||
|
||
/** | ||
* @inheritdoc | ||
*/ | ||
public function log($level, $message, array $context = []) | ||
{ | ||
$record = [ | ||
'level' => $level, | ||
'message' => $message, | ||
'context' => $context, | ||
]; | ||
|
||
$this->recordsByLevel[$record['level']][] = $record; | ||
$this->records[] = $record; | ||
} | ||
|
||
public function hasRecords($level) | ||
{ | ||
return isset($this->recordsByLevel[$level]); | ||
} | ||
|
||
public function hasRecord($record, $level) | ||
{ | ||
if (is_string($record)) { | ||
$record = ['message' => $record]; | ||
} | ||
return $this->hasRecordThatPasses(function ($rec) use ($record) { | ||
if ($rec['message'] !== $record['message']) { | ||
return false; | ||
} | ||
if (isset($record['context']) && $rec['context'] !== $record['context']) { | ||
return false; | ||
} | ||
return true; | ||
}, $level); | ||
} | ||
|
||
public function hasRecordThatContains($message, $level) | ||
{ | ||
return $this->hasRecordThatPasses(function ($rec) use ($message) { | ||
return strpos($rec['message'], $message) !== false; | ||
}, $level); | ||
} | ||
|
||
public function hasRecordThatMatches($regex, $level) | ||
{ | ||
return $this->hasRecordThatPasses(function ($rec) use ($regex) { | ||
return preg_match($regex, $rec['message']) > 0; | ||
}, $level); | ||
} | ||
|
||
public function hasRecordThatPasses(callable $predicate, $level) | ||
{ | ||
if (!isset($this->recordsByLevel[$level])) { | ||
return false; | ||
} | ||
foreach ($this->recordsByLevel[$level] as $i => $rec) { | ||
if (call_user_func($predicate, $rec, $i)) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
} | ||
|
||
public function __call($method, $args) | ||
{ | ||
if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { | ||
$genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; | ||
$level = strtolower($matches[2]); | ||
if (method_exists($this, $genericMethod)) { | ||
$args[] = $level; | ||
return call_user_func_array([$this, $genericMethod], $args); | ||
} | ||
} | ||
throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()'); | ||
} | ||
|
||
public function reset() | ||
{ | ||
$this->records = []; | ||
$this->recordsByLevel = []; | ||
} | ||
|
||
} |