     (when (overlay-get o 'ovirt-log-analyzer-filter)
       (overlay-put o 'invisible (not (overlay-get o 'invisible))))))
 
+(defun ovirt-log-analyzer-add-after (overlay string face)
+  (overlay-put overlay 'after-string
+               (concat (or (overlay-get overlay 'after-string) "")
+                       (propertize string 'face face) " ")))
+
 (defun ovirt-log-analyzer-process ()
   (save-excursion
     (goto-char (point-min))

               ((string-match "^Task/\\([1-9]\\)$" tag)
                (overlay-put tag-overlay 'after-string (make-string (string-to-number (match-string 1 tag))  ? )))
               ((string-match "^Task(duration=\\([0-9.]+\\))$" tag)
                (overlay-put tag-overlay 'after-string (propertize (concat (match-string 1 tag) "s" ) 'face 'font-lock-constant-face)))
               ((member tag '("Error or warning" "Long operation" "Task" "Unique"))
                ;; handled by font lock
                )


(require 'cl-lib)
(require 'hl-line)

(defvar ovirt-log-analyzer-hosts '())
(make-variable-buffer-local 'ovirt-log-analyzer-hosts)

(defvar ovirt-log-analyzer-vms '())
(make-variable-buffer-local 'ovirt-log-analyzer-vms)

(defun ovirt-log-analyzer-show-log ()
  (interactive)
