[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
03/20: installer: Generalize logging facility.
From: |
guix-commits |
Subject: |
03/20: installer: Generalize logging facility. |
Date: |
Wed, 2 Feb 2022 10:47:05 -0500 (EST) |
mothacehe pushed a commit to branch master
in repository guix.
commit 7251b15d302cdc53f26555396b226ad60684ad9c
Author: Josselin Poiret <dev@jpoiret.xyz>
AuthorDate: Sat Jan 15 14:49:55 2022 +0100
installer: Generalize logging facility.
* gnu/installer/utils.scm (%syslog-line-hook, open-new-log-port,
installer-log-port, %installer-log-line-hook, %display-line-hook,
%default-installer-line-hooks, installer-log-line): Add new
variables.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
---
gnu/installer/utils.scm | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/gnu/installer/utils.scm b/gnu/installer/utils.scm
index 9bd41e2ca0..b1b6f8b23f 100644
--- a/gnu/installer/utils.scm
+++ b/gnu/installer/utils.scm
@@ -37,7 +37,12 @@
run-command
syslog-port
+ %syslog-line-hook
syslog
+ installer-log-port
+ %installer-log-line-hook
+ %default-installer-line-hooks
+ installer-log-line
call-with-time
let/time
@@ -142,6 +147,9 @@ values."
(set! port (open-syslog-port)))
(or port (%make-void-port "w")))))
+(define (%syslog-line-hook line)
+ (format (syslog-port) "installer[~d]: ~a~%" (getpid) line))
+
(define-syntax syslog
(lambda (s)
"Like 'format', but write to syslog."
@@ -152,6 +160,43 @@ values."
(syntax->datum #'fmt))))
#'(format (syslog-port) fmt (getpid) args ...))))))
+(define (open-new-log-port)
+ (define now (localtime (time-second (current-time))))
+ (define filename
+ (format #f "/tmp/installer.~a.log"
+ (strftime "%F.%T" now)))
+ (open filename (logior O_RDWR
+ O_CREAT)))
+
+(define installer-log-port
+ (let ((port #f))
+ (lambda ()
+ "Return an input and output port to the installer log."
+ (unless port
+ (set! port (open-new-log-port)))
+ port)))
+
+(define (%installer-log-line-hook line)
+ (format (installer-log-port) "~a~%" line))
+
+(define (%display-line-hook line)
+ (display line)
+ (newline))
+
+(define %default-installer-line-hooks
+ (list %syslog-line-hook
+ %installer-log-line-hook))
+
+(define-syntax installer-log-line
+ (lambda (s)
+ "Like 'format', but uses the default line hooks, and only formats one
line."
+ (syntax-case s ()
+ ((_ fmt args ...)
+ (string? (syntax->datum #'fmt))
+ #'(let ((formatted (format #f fmt args ...)))
+ (for-each (lambda (f) (f formatted))
+ %default-installer-line-hooks))))))
+
;;;
;;; Client protocol.
- 20/20: installer: Use system-wide guix for system init., (continued)
- 20/20: installer: Use system-wide guix for system init., guix-commits, 2022/02/02
- 11/20: installer: Raise condition when mklabel fails., guix-commits, 2022/02/02
- 01/20: installer: Add crash dump upload support., guix-commits, 2022/02/02
- 02/20: installer: Use define instead of let at top-level., guix-commits, 2022/02/02
- 04/20: installer: Use new installer-log-line everywhere., guix-commits, 2022/02/02
- 09/20: installer: Add installer-specific run command process., guix-commits, 2022/02/02
- 06/20: installer: Keep PATH inside the install container., guix-commits, 2022/02/02
- 12/20: installer: Fix run-file-textbox-page when edit-button is #f., guix-commits, 2022/02/02
- 17/20: installer: Use dynamic-wind to setup installer., guix-commits, 2022/02/02
- 13/20: installer: Replace run-command by invoke in newt/page.scm., guix-commits, 2022/02/02
- 03/20: installer: Generalize logging facility.,
guix-commits <=
- 15/20: installer: Use named prompt to abort or break installer steps., guix-commits, 2022/02/02
- 14/20: installer: Add nano to PATH., guix-commits, 2022/02/02
- 19/20: installer: Make dump archive creation optional and selective., guix-commits, 2022/02/02
- 16/20: installer: Add error page when running external commands., guix-commits, 2022/02/02
- 10/20: installer: Use run-command-in-installer in (gnu installer parted)., guix-commits, 2022/02/02
- 05/20: installer: Un-export syslog syntax., guix-commits, 2022/02/02
- 07/20: installer: Remove specific logging code., guix-commits, 2022/02/02
- 08/20: installer: Capture external commands output., guix-commits, 2022/02/02
- 18/20: installer: Turn passwords into opaque records., guix-commits, 2022/02/02