▼ |  | Unstable: May Change Without Warning

1 | Guidelines for Developing unstable Libraries
2 | Automata: Compiling State Machines
3 | Bytes
4 | Contracts
5 | Converting Values to Strings
6 | Contracts for Macro Subexpressions
7 | Debugging
8 | Definitions
9 | Errors
10 | Filesystem
11 | Find
12 | Flonums
13 | Futures
14 | Functions
15 | Hash Tables
16 | Interface-Oriented Programming for Classes
17 | Lazy Require
18 | Lists
19 | Logging
20 | Mark Parameters
21 | Match
22 | Open place expressions
23 | Parameter Groups
24 | Pretty-Printing
25 | Re-Contracting Identifiers
26 | Sandbox
27 | Sequences
28 | Strings
29 | Structs
30 | Struct Printing
31 | Syntax
32 | Temporal Contracts: Explicit Contract Monitors
33 | GUI Libraries

On this page:

with-logging-to-port
with-intercepted-logging
start-recording
stop-recording

Version: 5.3.1
top ← prev up next →

### 19`` Logging

Vincent St-Amour <stamourv@racket-lang.org>

This library is unstable; compatibility will not be maintained. See Unstable: May Change Without Warning for more information.

( require unstable/logging )

This module provides tools for logging.

> > procedure

> > ( with-logging-to-port port proc log-spec ...) → any

> port : output-port?
> proc : ( -> any )
> log-spec : ( or/c 'fatal 'error 'warning 'info 'debug symbol? #f)

Runs proc, outputting any logging that would be received by ( make-log-receiver ( current-logger ) log-spec ... ) to port. Returns whatever proc returns.

Example:

> > ( let ([my-log ( open-output-string )])
> ( with-logging-to-port my-log
> ( lambda ()
> ( log-warning "Warning World!")
> ( + 2 2))
> 'warning)
> ( get-output-string my-log))

> "Warning World!\n"

> > procedure

> > ( with-intercepted-logging |  | interceptor |  |  |  |
> > |  | proc |  |  |  |
> > |  | log-spec ...) |  | → |  | any

> interceptor

> :

> ( -> ( vector/c
> ( or/c 'fatal 'error 'warning 'info 'debug)
> string?
> any/c )
> any )

> proc : ( -> any )
> log-spec : ( or/c 'fatal 'error 'warning 'info 'debug symbol? #f)

Runs proc, calling interceptor on any log message that would be received by ( make-log-receiver ( current-logger ) log-spec ... ). interceptor receives the entire log vectors (see Receiving Logged Events) as arguments. Returns whatever proc returns.

Example:

> > ( let ([warning-counter 0])
> ( with-intercepted-logging
> ( lambda (l)
> ( when ( eq? ( vector-ref l 0)
> 'warning)
> ( set! warning-counter ( add1 warning-counter))))
> ( lambda ()
> ( log-warning "Warning!")
> ( log-warning "Warning again!")
> ( + 2 2))
> 'warning)
> warning-counter)

> 2

A lower-level interface to logging is also available.

> > procedure

> > ( start-recording log-spec ...) → listener?

> log-spec : ( or/c 'fatal 'error 'warning 'info 'debug symbol? #f)

> > procedure

> > ( stop-recording listener)

> →

> ( listof ( vector/c ( or/c 'fatal 'error 'warning 'info 'debug)
> string?
> any/c ))

> listener : listener?

start-recording starts recording log messages matching the given log-spec. Messages will be recorded until stopped by passing the returned listener object to stop-recording. stop-recording will then return a list of the log messages that have been reported.

Examples:

> ( define l ( start-recording 'warning))

> > ( log-warning "1")

> > ( log-warning "2")

> > ( stop-recording l)

> '(#(warning "1" #<continuation-mark-set>)
> #(warning "2" #<continuation-mark-set>))

top ← prev up next →