For debugging purposes the node will span a global span, the span must include a debug_id
for the internal testnet in where we will be aggregating the trace logs we need to discriminate nodes. It can be auto-generated and should not link to any other identification (network, consensus, etc).
Services information should be easy to discriminate and easy to track and understand.
Each service need to create its own global Span
Each subsequent span (per service) need to be properly discriminated by a level (Trace
, Debug
, Info
, Warn
, Error
)
trace
and debug
for anything that helps us as devs to add information about what is going around. Ex: track methods calls.info
for any information that may be of use for operators (only)warn
and error
critical failuresEach core service will spawn a root span from where sub spans inherit.
Each root span must be named after the SERVICE_ID
async run(...) {
let service_root_span = debug_span!(<Self as ServiceData>::SERVICE_ID)
async {
...
}.instrument(service_root_span)
Services spans/logs should not share any sensitive information about the node itself like:
Events records: