60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | 
 | ||
|  | /* | ||
|  |  * This file is part of the Monolog package. | ||
|  |  * | ||
|  |  * (c) Jordi Boggiano <j.boggiano@seld.be> | ||
|  |  * | ||
|  |  * For the full copyright and license information, please view the LICENSE | ||
|  |  * file that was distributed with this source code. | ||
|  |  */ | ||
|  | 
 | ||
|  | namespace Monolog\Handler\FingersCrossed; | ||
|  | 
 | ||
|  | use Monolog\Logger; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Channel and Error level based monolog activation strategy. Allows to trigger activation | ||
|  |  * based on level per channel. e.g. trigger activation on level 'ERROR' by default, except | ||
|  |  * for records of the 'sql' channel; those should trigger activation on level 'WARN'. | ||
|  |  * | ||
|  |  * Example: | ||
|  |  * | ||
|  |  * <code> | ||
|  |  *   $activationStrategy = new ChannelLevelActivationStrategy( | ||
|  |  *       Logger::CRITICAL, | ||
|  |  *       array( | ||
|  |  *           'request' => Logger::ALERT, | ||
|  |  *           'sensitive' => Logger::ERROR, | ||
|  |  *       ) | ||
|  |  *   ); | ||
|  |  *   $handler = new FingersCrossedHandler(new StreamHandler('php://stderr'), $activationStrategy); | ||
|  |  * </code> | ||
|  |  * | ||
|  |  * @author Mike Meessen <netmikey@gmail.com> | ||
|  |  */ | ||
|  | class ChannelLevelActivationStrategy implements ActivationStrategyInterface | ||
|  | { | ||
|  |     private $defaultActionLevel; | ||
|  |     private $channelToActionLevel; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @param int   $defaultActionLevel   The default action level to be used if the record's category doesn't match any | ||
|  |      * @param array $channelToActionLevel An array that maps channel names to action levels. | ||
|  |      */ | ||
|  |     public function __construct($defaultActionLevel, $channelToActionLevel = array()) | ||
|  |     { | ||
|  |         $this->defaultActionLevel = Logger::toMonologLevel($defaultActionLevel); | ||
|  |         $this->channelToActionLevel = array_map('Monolog\Logger::toMonologLevel', $channelToActionLevel); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function isHandlerActivated(array $record) | ||
|  |     { | ||
|  |         if (isset($this->channelToActionLevel[$record['channel']])) { | ||
|  |             return $record['level'] >= $this->channelToActionLevel[$record['channel']]; | ||
|  |         } | ||
|  | 
 | ||
|  |         return $record['level'] >= $this->defaultActionLevel; | ||
|  |     } | ||
|  | } |