co-log-core |
|||
co-log |
|||
co-log-polysemy |
co-log is a composable and configurable logging framework. The idea of the approach is
described in the following blog post:
The repository contains the following packages:
co-log-core: lightweight package with basic data types and general idea.co-log: taggless final implementation of logging library based onco-log-core.co-log-polysemy: implementation of logging library based onco-log-coreand thepolysemyextensible effects library.co-log-benchmark: Benchmarks of theco-loglibrary.
See the following tutorial series about the library:
co-log is compared with basic functions like putStrLn. Since IO overhead is
big enough, every benchmark dumps 10K messages to output. If benchmark name
doesn't contain Message then this benchmark simply dumps string "message"
to output, otherwise it works with Message data type from the co-log
library.
| Benchmarks | Time for 10K messages |
|---|---|
Prelude.putStrLn |
5.117ms |
Text.putStrLn |
9.220ms |
ByteString.putStrLn |
2.971ms |
mempty |
1.181ms |
logStringStdout |
5.107ms |
logPrint |
5.248ms |
logTextStdout |
5.351ms |
logByteStringStdout |
2.933ms |
logByteStringStderr |
17.482ms |
ByteString > (stdout <> stderr) |
17.715ms |
Message > format > stdout |
9.188ms |
Message > format > ByteString > stdout |
3.524ms |
Message{callstack} > format > stdout |
9.139ms |
Message{callstack:5} > format > stdout |
9.464ms |
Message{callstack:50} > format > stdout |
9.439ms |
Message{Time,ThreadId} > format > stdout |
54.160ms |
Message{Time,ThreadId} > format > ByteString > stdout |
54.137ms |