All Projects β†’ kowainik β†’ Co Log

kowainik / Co Log

Licence: mpl-2.0
πŸ““ Flexible and configurable modern #Haskell logging framework

Programming Languages

haskell
3896 projects

Labels

Projects that are alternatives of or similar to Co Log

Defmt
Efficient, deferred formatting for logging on embedded systems
Stars: ✭ 172 (-18.1%)
Mutual labels:  logging
Spf4j
Simple performance framework for java
Stars: ✭ 184 (-12.38%)
Mutual labels:  logging
Golib
Go Library [DEPRECATED]
Stars: ✭ 194 (-7.62%)
Mutual labels:  logging
Laravel Auditing
Record the change log from models in Laravel
Stars: ✭ 2,210 (+952.38%)
Mutual labels:  logging
Logrange
High performance data aggregating storage
Stars: ✭ 181 (-13.81%)
Mutual labels:  logging
Logcat
Android ζ—₯εΏ—ζ‰“ε°ζ‘†ζžΆοΌŒεœ¨ζ‰‹ζœΊδΈŠε―δ»₯η›΄ζŽ₯ηœ‹εˆ° Logcat ζ—₯志啦
Stars: ✭ 189 (-10%)
Mutual labels:  logging
Graylog Ansible Role
Ansible role which installs and configures Graylog
Stars: ✭ 173 (-17.62%)
Mutual labels:  logging
Docker Elastic
Deploy Elastic stack in a Docker Swarm cluster. Ship application logs and metrics using beats & GELF plugin to Elasticsearch
Stars: ✭ 202 (-3.81%)
Mutual labels:  logging
Logrus Prefixed Formatter
Logrus Prefixed Log Formatter
Stars: ✭ 181 (-13.81%)
Mutual labels:  logging
Sematext Agent Docker
Sematext Docker Agent - host + container metrics, logs & event collector
Stars: ✭ 194 (-7.62%)
Mutual labels:  logging
Monolog Bridge
Provides integration for Monolog with various Symfony components.
Stars: ✭ 2,238 (+965.71%)
Mutual labels:  logging
Cloudlog
Web based amateur radio logging application built using PHP & MySQL supports general station logging tasks from HF to Microwave with supporting applications to support CAT control.
Stars: ✭ 179 (-14.76%)
Mutual labels:  logging
Timberkt
Easy Android logging with Kotlin and Timber
Stars: ✭ 192 (-8.57%)
Mutual labels:  logging
Cls Rtracer
Request Tracer - CLS-based request id generation for Express, Fastify, Koa and Hapi, batteries included
Stars: ✭ 175 (-16.67%)
Mutual labels:  logging
Log4net.elasticsearch
log4net appender to ElasticSearch
Stars: ✭ 202 (-3.81%)
Mutual labels:  logging
Blackhole
Yet another logging library.
Stars: ✭ 173 (-17.62%)
Mutual labels:  logging
Acho
The Hackable Log
Stars: ✭ 189 (-10%)
Mutual labels:  logging
Collector Sidecar
Manage log collectors through Graylog
Stars: ✭ 209 (-0.48%)
Mutual labels:  logging
Swift Log
A Logging API for Swift
Stars: ✭ 2,579 (+1128.1%)
Mutual labels:  logging
Jl
jl β€” JSON Logs, a development tool for working with structured JSON logging.
Stars: ✭ 194 (-7.62%)
Mutual labels:  logging

co-log

Co-logo

GitHub CI Build status Windows build MPL-2.0 license

co-log-core Hackage Stackage LTS Stackage Nightly
co-log Hackage Stackage LTS Stackage Nightly
co-log-polysemy Hackage Stackage LTS Stackage Nightly

co-log is a composable and configurable logging framework. It combines all the benefits of Haskell idioms to provide a reasonable and convenient interface. Though it uses some advanced concepts in its core, we are striving to provide beginner-friendly API. The library also contains complete documentation with a lot of beginner-friendly examples, explanations and tutorials to guide users. The combination of a pragmatic approach to logging and fundamental Haskell abstractions allows us to create a highly composable and configurable logging framework.

If you're interested in how different Haskell typeclasses are used to implement core functions of co-log, you can read the following blog post which goes into detail about internal implementation specifics:

co-log is also modular on the level of packages. We care a lot about a low dependency footprint so you can build your logging only on top of the minimal required interface for your use-case. This repository contains the following packages:

  • co-log-core: lightweight package with basic data types and general idea which depends only on base.
  • co-log: taggless final implementation of logging library based on co-log-core.
  • co-log-polysemy: implementation of logging library based on co-log-core and the polysemy extensible effects library.
  • co-log-benchmark: benchmarks of the co-log library.

To provide a more user-friendly introduction to the library, we've created the tutorial series which introduces the main concepts behind co-log smoothly:

co-log also cares about concurrent logging. For this purpose we have the concurrent-playground executable where we experiment with different multithreading scenarios to test the library's behavior. You can find it here:

Benchmarks

co-log is compared with basic functions like putStrLn. Since IO overhead is big enough, every benchmark dumps 10K messages to output. If a benchmark's name doesn't contain Message then this benchmark simply dumps the string "message" to output, otherwise it works with the Message data type from the co-log library.

To run benchmarks, use the following command:

cabal v2-run co-log-bench
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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].