public function addHandler(
        /*# string */ $level,
        callable $handler,
        /*# string */ $channel = '*',
        /*# int */ $priority = 0
    ) {
        // check level
        if (!isset(LogLevel::$levels[$level])) {
            throw new InvalidArgumentException(
                Message::get(Message::LOG_LEVEL_INVALID, $level),
                Message::LOG_LEVEL_INVALID
            );
        }

        return $this->addCallable(
            'handlers',
            $handler,
            $channel,
            $priority,
            $level
        );
    }