Aha! Thanks for the quick reply. I'll have to rethink how I'm handling 
logging.

On Thursday, January 17, 2019 at 9:03:39 PM UTC-5, Matthew Flatt wrote:
>
> Yes, the default logger cheats. When you log a relevant message, it's 
> written immediately to stdout/stderr/syslog instead of being posted to 
> a receiver that is later polled. 
>
> At Thu, 17 Jan 2019 17:59:30 -0800 (PST), Brian Adkins wrote: 
> > I've created my own logger via make-logger, and I started a thread with 
> a 
> > loop that sync's on the log receiver I created via make-log-receiver. 
> I'm 
> > logging some messages in a test, and it appears that the test completes 
> > (and presumably kills the log receiver thread) before the log message is 
> > displayed. I'm calling (flush-output) after printf'ing the message to 
> > standard out. 
> > 
> > The default logger does not have this problem. Is that because it 
> doesn't 
> > use a separate thread to sync on the log messages and display them? Or 
> am I 
> > misunderstanding how to best utilize a custom logger? 
> > 
> > I've copy/pasted some code below for specifics. 
> > 
> > Thanks, 
> > Brian 
> > 
> > (define axio-logger (make-logger 'axio)) 
> > 
> > (define/contract (axio-log-debug str) 
> >   (-> string? any) 
> >   (log-message axio-logger 'debug str #f)) 
> > 
> > ... 
> > 
> > (define/contract (axio-init-logger level) 
> >   (-> symbol? any) 
> >   (define axio-log-receiver (make-log-receiver axio-logger level)) 
> >   
> >   (thread 
> >    (λ () 
> >      (let loop () 
> >        (define v (sync axio-log-receiver)) 
> >        (printf "[~a] ~a\n" 
> >                (vector-ref v 0) 
> >                (vector-ref v 1)) 
> >        (flush-output) 
> >        (loop))))) 
> > 
> > 
> > (axio-log-debug "my log message") 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "Racket Users" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to