summaryrefslogtreecommitdiffstats
path: root/src/Monolog/Logger.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Monolog/Logger.php')
-rw-r--r--src/Monolog/Logger.php109
1 files changed, 66 insertions, 43 deletions
diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php
index a220c87..93349e2 100644
--- a/src/Monolog/Logger.php
+++ b/src/Monolog/Logger.php
@@ -11,6 +11,9 @@
namespace Monolog;
+use Monolog\Handler\HandlerInterface;
+use Monolog\Handler\StreamHandler;
+
class Logger
{
/**
@@ -42,104 +45,124 @@ class Logger
400 => 'ERROR',
);
- protected $logs;
+ protected $name;
+
+ /**
+ * The handler instance at the top of the handler stack
+ *
+ * @var Monolog\Handler\HandlerInterface
+ */
+ protected $handler;
- public function __construct($logs = array())
+ public function __construct($name)
{
- $this->logs = array();
- if (!is_array($logs)) {
- $logs = array($logs);
- }
- foreach ($logs as $log) {
- $this->logs[$log->getName()] = $log;
+ $this->name = $name;
+ }
+
+ public function pushHandler(HandlerInterface $handler)
+ {
+ if ($this->handler) {
+ $handler->setParent($this->handler);
}
+ $this->handler = $handler;
}
- public function addLog(Log $log)
+ public function popHandler()
{
- $this->logs[$log->getName()] = $log;
+ if (null === $this->handler) {
+ throw new \LogicException('You tried to pop from an empty handler stack.');
+ }
+ $top = $this->handler;
+ $this->handler = $top->getParent();
+ return $top;
}
- public function addMessage($level, $message, $log = null)
+ public function addMessage($level, $message)
{
+ if (null === $this->handler) {
+ $this->pushHandler(new StreamHandler('php://stderr', self::DEBUG));
+ }
$message = array(
'message' => $message,
'level' => $level,
+ 'level_name' => $this->getLevelName($level),
+ 'channel' => $this->name,
+ 'datetime' => new \DateTime(),
+ 'extra' => array(),
);
- if (null === $log) {
- $logs = $this->logs;
- } else {
- $logs = is_array($log) ? array_flip($log) : array($log => true);
- }
- foreach ($logs as $log => $dummy) {
- $this->logs[$log]->log($level, $message);
+ $handled = false;
+ $handler = $this->handler;
+ while ($handler && true !== $handled) {
+ $handled = (bool) $handler->handle($message);
+ $handler = $handler->getParent();
}
+ return $handled;
}
- public function addDebug($message, $log = null)
+ public function addDebug($message, $channel = 'default')
{
- $this->addMessage(self::DEBUG, $message, $log);
+ $this->addMessage(self::DEBUG, $message, $channel);
}
- public function addInfo($message, $log = null)
+ public function addInfo($message, $channel = 'default')
{
- $this->addMessage(self::INFO, $message, $log);
+ $this->addMessage(self::INFO, $message, $channel);
}
- public function addWarning($message, $log = null)
+ public function addWarning($message, $channel = 'default')
{
- $this->addMessage(self::WARNING, $message, $log);
+ $this->addMessage(self::WARNING, $message, $channel);
}
- public function addError($message, $log = null)
+ public function addError($message, $channel = 'default')
{
- $this->addMessage(self::ERROR, $message, $log);
+ $this->addMessage(self::ERROR, $message, $channel);
}
- public static function getLevelName($level)
+ public function getLevelName($level)
{
return self::$levels[$level];
}
// ZF Logger Compat
- public function debug($message, $log = null)
+ public function debug($message, $channel = null)
{
- $this->addMessage(self::DEBUG, $message, $log);
+ $this->addMessage(self::DEBUG, $message, $channel);
}
- public function info($message, $log = null)
+ public function info($message, $channel = 'default')
{
- $this->addMessage(self::INFO, $message, $log);
+ $this->addMessage(self::INFO, $message, $channel);
}
- public function notice($message, $log = null)
+ public function notice($message, $channel = 'default')
{
- $this->addMessage(self::INFO, $message, $log);
+ $this->addMessage(self::INFO, $message, $channel);
}
- public function warn($message, $log = null)
+ public function warn($message, $channel = 'default')
{
- $this->addMessage(self::WARNING, $message, $log);
+ $this->addMessage(self::WARNING, $message, $channel);
}
- public function err($message, $log = null)
+ public function err($message, $channel = 'default')
{
- $this->addMessage(self::ERROR, $message, $log);
+ $this->addMessage(self::ERROR, $message, $channel);
}
- public function crit($message, $log = null)
+ public function crit($message, $channel = 'default')
{
- $this->addMessage(self::ERROR, $message, $log);
+ $this->addMessage(self::ERROR, $message, $channel);
}
- public function alert($message, $log = null)
+ public function alert($message, $channel = 'default')
{
- $this->addMessage(self::ERROR, $message, $log);
+ $this->addMessage(self::ERROR, $message, $channel);
}
- public function emerg($message, $log = null)
+ public function emerg($message, $channel = 'default')
{
- $this->addMessage(self::ERROR, $message, $log);
+ $this->addMessage(self::ERROR, $message, $channel);
}
} \ No newline at end of file