Last active
September 10, 2023 09:52
-
-
Save Metaxal/6511048 to your computer and use it in GitHub Desktop.
Simple usage of Racket's logging facility
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#lang racket/base | |
; One way to define a logger | |
(define lg (make-logger 'my-logger)) | |
; Define a receiver for this logger, along with a log level | |
(define rc (make-log-receiver lg 'error)) ; also try with 'debug | |
; Another way to define a logger, with additional forms | |
(define-logger lg2) | |
(define rc2 (make-log-receiver lg2-logger 'debug)) | |
; Listen for events on the two log-receivers | |
(void | |
(thread | |
(λ () (let loop () | |
(define v (sync rc rc2)) | |
(printf "[~a] ~a\n" (vector-ref v 0) (vector-ref v 1)) | |
(loop))))) | |
; Set the current logger | |
(current-logger lg) | |
; Log messages for the current logger | |
(log-error "Exterminate!") | |
(log-fatal "Exterminate! Exterminate!") | |
(log-debug "What's the red button for?") | |
; Log messages for lg2 specifically | |
(log-lg2-info "We're on a mission from God.") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Outputs
Note that messages may not be in their initial order because they are asynchronous events