co-log
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-core
and thepolysemy
extensible effects library.co-log-benchmark
: Benchmarks of theco-log
library.
See the following tutorial series about the library:
Benchmarks
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 |