Ejemplo n.º 1
0
 /**
  * @test
  * @depends addTest
  * @depends addTest2
  */
 public function flagsTest()
 {
     $flags = [];
     $mask = 0;
     while (\count($flags) < 5) {
         $power = \mt_rand(0, 10);
         $flag = \pow(2, $power);
         $flags[] = $flag;
         $mask = BitMask::addFlag($mask, $flag);
     }
     $flags = \array_unique($flags);
     \sort($flags);
     $flags2 = BitMask::maskToFlags($mask);
     $this->assertTrue($flags === $flags2);
 }
Ejemplo n.º 2
0
 /**
  * 
  * @return bool
  */
 public function isWritable()
 {
     return $this->flags->has(self::WRITABLE);
 }
Ejemplo n.º 3
0
 /**
  * @test
  * @depends listLevelsTest
  */
 public function isTest()
 {
     $list = Level::listLevels();
     $mask = 0;
     foreach ($list as $name => $level) {
         $this->assertTrue(Level::is($level));
         $mask = BitMask::addFlag($mask, $level);
     }
     $this->assertTrue(Level::is($mask));
     $this->assertFalse(Level::is(1 << 10));
 }
Ejemplo n.º 4
0
 /**
  * Attach a logger handler on the end of list.
  * 
  * @param HandlerInterface $handler
  * @return self
  */
 public function pushHandler(HandlerInterface $handler)
 {
     $this->handlers[] = $handler;
     $this->level = BitMask::addFlag($this->level, $handler->getHandledLevel());
     return $this;
 }
Ejemplo n.º 5
0
 /**
  * 
  * @param int $level
  * @return bool
  */
 public function isHandled($level)
 {
     return BitMask::hasFlag($this->level, $level);
 }
Ejemplo n.º 6
0
 /**
  * 
  * @param int|string $level
  * @param string $message
  * @param array $context
  * @return self
  */
 public function log($level, $message, array $context = array())
 {
     // Converting Psr\LogLevel to int
     $level = Level::toLevel($level);
     // Level is unknown? Stop
     if (!Level::is($level)) {
         $this->emit('unknown', $level, $message);
         return $this;
     }
     // If $level is a mask, explode it!
     if (!BitMask::isSingleFlag($level)) {
         $me = __FUNCTION__;
         foreach (BitMask::maskToFlags($level) as $flag) {
             $this->{$me}($flag, $message, $context);
         }
         return $this;
     } else {
         if (!$this->handler->isHandled($level)) {
             $this->emit('unhandled', $level, $message);
             return $this;
         }
     }
     // Make log struct
     $log = ['level' => $level, 'name' => Level::getLevelName($level), 'message' => $message, 'context' => $context, 'timestamp' => \microtime(true), 'extra' => []];
     // Iterate the filters
     foreach ($this->filters as &$filter) {
         $log = $filter($log);
     }
     $this->emit('log', $log);
     $this->emit(\strtolower($log['name']), $log);
     // Call handler
     $this->handler->handle($log);
     return $this;
 }
Ejemplo n.º 7
0
 /**
  * Returns a bitmask with all log levels registered.
  * 
  * @return BitMask
  */
 public static function maskAll()
 {
     static $mask = null;
     if (\is_null($mask)) {
         $mask = new BitMask();
         foreach (static::listLevels() as $level) {
             $mask->add($level);
         }
     }
     return clone $mask;
 }