blob: c937c668a412e9667fd0c2458662e0e6ba5322d6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
;;; Copyright © 2019 - 2023 Jakob L. Kreuze <zerodaysfordays@sdf.org>
;;;
;;; This program is free software; you can redistribute it and/or
;;; modify it under the terms of the GNU General Public License as
;;; published by the Free Software Foundation; either version 3 of the
;;; License, or (at your option) any later version.
;;;
;;; This program is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;;; General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program. If not, see
;;; <http://www.gnu.org/licenses/>.
(define-module (jakob dynamic logging)
#:use-module (ice-9 format)
#:use-module (jakob dynamic config)
#:use-module (srfi srfi-19)
#:export (log-append!))
(define %log-level (make-parameter 'info))
(define %log-file-name
(make-parameter (if (%debug-enabled) "/dev/stdout" "/var/log/jakob-dynamic.log")))
(define (dominates message-level baseline-level)
"Determine if `a' should be shown for baseline log level `b'."
(define log-level-hierarchy '(debug info warn error))
(>= (list-index log-level-hierarchy message-level)
(list-index log-level-hierarchy baseline-level)))
(define (log-append! level message)
"Append `message', at `level', to the log buffer."
(when (dominates level (%log-level))
(let ((output-port (open-file (%log-file-name) "a"))
(now (date->string (current-date) "~4")))
(format output-port "[~a] ~a: ~a~%" now level message)
(close output-port))))
|