diff options
| author | Jakob L. Kreuze | 2022-11-15 19:17:44 -0500 |
|---|---|---|
| committer | Jakob L. Kreuze | 2022-11-15 19:17:44 -0500 |
| commit | 2c666a53e847e6b49dbdf4fd22416872bb197f6b (patch) | |
| tree | 9bacca9cdc0ee645941bc09b61d1d6a91d6f2678 /haunt/jakob/dynamic/logging.scm | |
| parent | b6482d86fa58dee7d55889fa873463274f81d3db (diff) | |
[dynamic] Move to `haunt' directory and `jakob' namespace
There will likely be some refactoring later as part of this change, since we can
unify the `util' namespaces.
Diffstat (limited to 'haunt/jakob/dynamic/logging.scm')
| -rw-r--r-- | haunt/jakob/dynamic/logging.scm | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/haunt/jakob/dynamic/logging.scm b/haunt/jakob/dynamic/logging.scm new file mode 100644 index 0000000..42b367d --- /dev/null +++ b/haunt/jakob/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 (jakob 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)))))) |