/**
 * Class ErrorLogger
 */
class ErrorLogger extends Logger
{
    /**
     * @param $message
     * @return mixed|void
     */
    protected function doLog($message)
    {
        echo "Sending to stderr: ", $message, " \n";
    }
}
/**
 * Class StdoutLogger
 */
class StdoutLogger extends Logger
{
    /**
     * @param $message
     * @return mixed|void
     */
    protected function doLog($message)
    {
        echo "Writing to stdout: ", $message, " \n";
    }
}
$logger = new StdoutLogger();
$logger->setNext(new ErrorLogger())->setNext(new EmailLogger());
$logger->log('Something happened');