the adapters built on them: /otel, /prometheus, createStats(), /hystrix.
Each message is a TelemetryEvent: { event, source: { pipelineName, strategyName, tags? }, context, args }. The tables list args. Events are only built when someone listens, and a pipeline built with telemetry: false emits none.
The strategy-level on* callbacks receive the same args object, so you can move code between a callback and a listener.
Subscribe to every strategy event in the process. Works in every runtime (diagnostics_channel is Node-only). Returns an unsubscribe function.
onTelemetry(({
event: string
event,
source: TelemetrySource
source,
args: unknown
args }) => {
if (
event: string
event==='OnCircuitOpened')
var console:Console
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s', 'world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname='Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout=getStreamSomehow();
consterr=getStreamSomehow();
constmyConsole=new console.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s', 'world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Emitted by every pipeline, whatever strategies it has.
Event
When
args
Callback
OnPipelineExecuting
An execution starts.
{ context }
none
OnPipelineExecuted
An execution ends.
{ outcome, duration }
none
OnStrategyExecuted
Each strategy finishes its part of an execution. source.strategyName names it.
{ outcome, duration, context }
none
OnExecutionAttempt
Every call of your callback: the single attempt, each retry, each hedged attempt.
{ outcome, context, attemptNumber, duration }
none
Durations are milliseconds. attemptNumber is 0 for the first attempt; in OnExecutionAttempt it is the execution-wide context.attemptNumber, in strategy events the strategy’s own count.
A custom strategy can emit events into the same stream with report(source, 'OnMyEvent', context, args). Use the source your factory receives, so the event carries the pipeline’s name and tags.