Generic Tracing component

The goal is to build a generic tracing and logging component with the following features

Features

  • Asnychronous logging
    The logging should be decoupled from the normal message flow so performance is not degraded too much
  • Persistent buffering
    To achieve decoupling for larger messages it should be possible to store larger messages on disk before they are send to the real tracing destination
  • SPI for further processing of the message
    There should be a well defined interface for the further processing of the traced messages so it is for example possible to attach a remote logging server or a central monitoring system
  • Support for correlation of request and responses
    The tracing component should support correlation ids for exchanges so request and response messages can later be combined again
  • Support for flow id
    The tracing should support a flow id that is created at a client side of the execution flow and that also allows tracking of the execution over intermediaries or when a service calls other services

Design

Tracing Component Design Flow id