[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/18: installer: Generalize logging facility.
From: |
guix-commits |
Subject: |
02/18: installer: Generalize logging facility. |
Date: |
Mon, 17 Jan 2022 05:04:51 -0500 (EST) |
mothacehe pushed a commit to branch wip-harden-installer
in repository guix.
commit ac014ddd33f49c7e49cba8cae4fba92860c2b5ec
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.
- 18/18: installer: Make dump archive creation optional and selective., (continued)
- 18/18: installer: Make dump archive creation optional and selective., guix-commits, 2022/01/17
- 06/18: installer: Remove specific logging code., guix-commits, 2022/01/17
- 03/18: installer: Use new installer-log-line everywhere., guix-commits, 2022/01/17
- 04/18: installer: Un-export syslog syntax., guix-commits, 2022/01/17
- 08/18: installer: Add installer-specific run command process., guix-commits, 2022/01/17
- 09/18: installer: Use run-command-in-installer in (gnu installer parted)., guix-commits, 2022/01/17
- 10/18: installer: Raise condition when mklabel fails., guix-commits, 2022/01/17
- 14/18: installer: Use named prompt to abort or break installer steps., guix-commits, 2022/01/17
- 15/18: installer: Add error page when running external commands., guix-commits, 2022/01/17
- 17/18: installer: Turn passwords into opaque records., guix-commits, 2022/01/17
- 02/18: installer: Generalize logging facility.,
guix-commits <=
- 11/18: installer: Fix run-file-textbox-page when edit-button is #f., guix-commits, 2022/01/17
- 12/18: installer: Replace run-command by invoke in newt/page.scm., guix-commits, 2022/01/17
- 13/18: installer: Add nano to PATH., guix-commits, 2022/01/17
- 16/18: installer: Use dynamic-wind to setup installer., guix-commits, 2022/01/17