diff options
Diffstat (limited to 'dynamic/logging.scm')
| -rw-r--r-- | dynamic/logging.scm | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/dynamic/logging.scm b/dynamic/logging.scm new file mode 100644 index 0000000..dab2464 --- /dev/null +++ b/dynamic/logging.scm @@ -0,0 +1,37 @@ +;;; Copyright © 2019 - 2022 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 (dynamic logging) + #:use-module (ice-9 format) + #:use-module (srfi srfi-19) + #:export (log-append!)) + +(define %log-file-name (make-parameter "/var/log/jakob-dynamic.log")) +(define %log-level (make-parameter 'info)) + +(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)) + (call-with-output-file (%log-file-name) + (lambda (port) + (let ((now (date->string (current-date) "~4"))) + (format port "[~a] ~a: ~a~%" now level message)))))) |