53 lines
1.3 KiB
Markdown
53 lines
1.3 KiB
Markdown
# simple-log
|
|
|
|
`simple-log` is a small convenience layer on top of Racket's logging system.
|
|
It provides generated procedures for the standard log levels and supports
|
|
logging to the display, regular or daily rotating files, custom callbacks, and
|
|
a filterable in-memory store.
|
|
|
|
```racket
|
|
#lang racket
|
|
|
|
(require simple-log)
|
|
|
|
(sl-def-log example)
|
|
(define logs (sl-log-to-store 1000))
|
|
(sl-log-to-display)
|
|
|
|
(info-example "Started with ~a items" 3)
|
|
(warn-example "An example warning")
|
|
(sync-log-example)
|
|
|
|
(sl-store->display
|
|
(sl-store-grep-level logs 'warning))
|
|
```
|
|
|
|
Topic filters can select multiple topics or invert a match:
|
|
|
|
```racket
|
|
(sl-store-grep-topic logs '(webview webview-backend))
|
|
(sl-store-grep-topic logs 'webview-backend #:invert? #t)
|
|
```
|
|
|
|
The Scribble manual documents logger definitions, destinations, log levels,
|
|
synchronization, and all in-memory store operations.
|
|
## Rotating log files
|
|
|
|
Daily rotation keeps the current log as plain text and gzip-compresses older
|
|
days. The retention value counts the current day as well.
|
|
|
|
```racket
|
|
(sl-log-to-rotating-file "application.log") ; 7 days
|
|
(sl-log-to-rotating-file "application.log" 14) ; 14 days
|
|
```
|
|
|
|
With a retention of 7 days the files look like this:
|
|
|
|
```text
|
|
application.log
|
|
application.log.2026-08-28.gz
|
|
application.log.2026-08-27.gz
|
|
...
|
|
```
|
|
|