-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Async comes with a logging module that is easy to use and provides a simple interface that allows logging at a specific level and attaching some tags along with a message payload.
A more robust approach would be if every function that needed to log something could look up a unique identifier that's currently active in its context. Blocking applications that use pre-emptive threads can rely on thread-local-storage for this use case and maintain a stack of context ids that can be used by the logging system to determine the current active context id and automatically attach it to a log event. This approach doesn't work for user-mode threaded systems as a single thread can switch between various tasks or systems where a task could potentially jump across threads. Async provides a solution for such context propagation that works at the task level and is naturally called ExecutionContext. Every Async task runs within an execution context, and the context object offers users to append some metadata to its local storage.
All the code in this post can be found here. If you notice any issues let me know via github.