protected function getChangelog() : string
    {
        $result = '';

        // plain changelog if entity is new
        if ($this->entity->isNew()) {
            return $result;
        }

        // get entity's modified fields
        $fields = $this->entity->extractOriginalChanged($this->entity->visibleProperties());

        if (empty($fields)) {
            return $result;
        }

        // remove ignored fields
        foreach ($this->ignoredFields as $field) {
            if (array_key_exists($field, $fields)) {
                unset($fields[$field]);
            }
        }

        if (empty($fields)) {
            return $result;
        }

        foreach ($fields as $k => $v) {
            $result .= sprintf(static::CHANGELOG, Inflector::humanize($k), $v, $this->entity->{$k});
        }

        return $result;
    }