public function append(ViolationInterface $violation, $severity = DestinationInterface::SEVERITY_ERROR)
    {
        $exceptions = array();
        $severity   = $this->mapSeverity($severity);

        // If severity has been silenced, exit.
        if (empty($severity)) {
            return;
        }

        $this->violations[$severity][] = $violation;

        foreach ($this->destinations as $destination) {
            try {
                $destination->append($violation, $severity);
            } catch (\Exception $exception) {
                $exceptions[] = $exception;
            }
        }

        if ($exceptions) {
            throw new AppendViolationException('Could not append violation ' . get_class($violation), $exceptions);
        }
    }