public function getLines($limit = null, $offset = 0, $filter = null)
    {
        $lines = clone $this->lines;
        if ($filter !== null) {
            $logger = isset($filter['logger']) ? $filter['logger'] : null;
            $minLevel = isset($filter['level']) ? $filter['level'] : 0;
            $text = (isset($filter['text']) && $filter['text'] != '') ? $filter['text'] : null;
            $searchMeta = isset($filter['search_meta']) ? ($filter['search_meta']) : true;

            foreach ($lines as $line) {
                if (
                    !static::logLineHasLogger($logger, $line)
                    || !static::logLineHasMinLevel($minLevel, $line)
                    || !static::logLineHasText($text, $line, $searchMeta)
                ) {
                    $lines->removeElement($line);
                }
            }
        }
        if (null !== $limit) {
            return array_values($lines->slice($offset, $limit));
        }

        return array_values($lines->toArray());
    }