Coverage report: /home/ellis/comp/core/app/skel/core/log.lisp

KindCoveredAll%
expression0102 0.0
branch020 0.0
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 ;;; log.lisp --- Skel Logger
2
 
3
 ;; 
4
 
5
 ;;; Code:
6
 (in-package :skel/core/log)
7
 
8
 (defclass sk-log-schema (rdb-log-schema sk-schema) ())
9
 
10
 (defvar *skel-log-schema* (make-instance 'sk-log-schema))
11
 
12
 (defclass skel-db-sink (rdb-sink) ()
13
   (:default-initargs
14
    :db (make-db :rocksdb :path (skel-db-path "log/") :opts (default-rdb-opts))))
15
 
16
 (defmethod initialize-instance :after ((self skel-db-sink) &key (schema *skel-log-schema*))
17
   (load-schema self schema))
18
 
19
 (defvar *skel-logger-config*
20
   (config:make-config :logger :ast '((level-filter :id :level-filter)
21
                                      (tag-tree-filter :id :tag-filter)
22
                                      (skel-db-sink :id :sink))))
23
 
24
 (defvar-unbound *skel-logger*)
25
 
26
 (defun sk-log (level fmt &rest args)
27
   (msg *skel-logger* (make-instance 'log-message 
28
                        :level level 
29
                        :timestamp (time:now) 
30
                        :content (format nil fmt args))))
31
 
32
 (defun init-skel-logger (&optional (cfg *skel-logger-config*))
33
   (unless (and (boundp '*skel-logger*) *skel-logger*)
34
     (let* ((lgr (build cfg))
35
            (db (sink lgr)))
36
       (if (probe-file (name db))
37
           (progn
38
             (load-opts db)
39
             (open-columns* db))
40
           (progn
41
             (open-columns* db)))
42
       (setq *skel-logger* lgr))))
43
 
44
 ;; (funcall 'init-skel-db-logger)
45
 (defun sk-log-list (&optional level)
46
   (with-db (db :db (sink *skel-logger*) :open nil :close nil)
47
     (with-iter (it (iter db :column (find-column level db)))
48
       (seek-to-first)
49
       (loop while (iter-valid-p)
50
             collect (cons (time:octets-to-timestamp (key)) 
51
                           (sb-ext:octets-to-string (val)))
52
             do (next)))))
53
 
54
 (defun sk-log-repair ()
55
   (if (and (boundp '*skel-logger*) *skel-logger*)
56
       (repair-db (sink *skel-logger*))
57
       (with-db (db :db (make-instance 'skel-db-sink) :open nil :close t)
58
         (repair-db db)
59
         (open-columns* db))))
60
 
61
 (defun sk-log-shutdown ()
62
   (when (and (boundp '*skel-logger*) *skel-logger*)
63
     (shutdown-db (sink *skel-logger*))
64
     (setq *skel-logger* nil)))
65
 
66
 (defun sk-log-close ()
67
   (when (and (boundp '*skel-logger*) *skel-logger*)
68
     (close-db (sink *skel-logger*))))
69
 
70
 ;; (sk-log-repair)
71
 ;; (init-skel-logger)
72
 ;; (sk-log-close)
73
 ;; (sk-log-destroy)
74
 
75
 (defun sk-log-destroy ()
76
   (destroy-db (make-instance 'skel-db-sink)))
77
 
78
 ;; (inspect (create-co (make-instance 'skel-db-sink)))
79
 
80
 ;; (sk-log-repair)