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;
 | |
|     }
 | |
| }
 |