import { IRequestContext } from "../pipeline/common"; import { ITrackerAdapter } from "../instrumentations/trackers/index"; export declare enum SpanKind { Request = 0, Command = 1, Task = 2, Event = 3, Custom = 4, } export interface TrackerId { correlationId?: string; parentId?: string; spanId?: string; } export interface ITracker { /** * Log an error * * @param {Error} error Error instance * @param {string} [msg] Additional message * */ logError(error: Error, msg?: () => string): any; /** * Log a message info * * @param {string} msg Message format (can include %s, %j ...) * @param {...Array} params Message parameters * */ logInfo(msg: () => string): any; /** * Log a verbose message. Verbose message are enable by service configuration property : enableVerboseLog * * @param {any} context Current context * @param {string} msg Message format (can include %s, %j ...) * @param {...Array} params Message parameters * */ logVerbose(msg: () => string): any; dispose(): any; id: TrackerId; } export interface ISpanTracker extends ITracker { context: IRequestContext; durationInMs: number; now: number; tracker: ITrackerAdapter; kind: SpanKind; trackAction(name: string, tags?: { [index: string]: string; }): any; addTag(name: string, value: string): any; addHttpRequestTags(uri: string, verb: string): any; addProviderCommandTags(address: string, schema: string, tenant: string): any; addServiceCommandTags(serviceName: string, serviceVersion: string): any; addCustomCommandTags(commandType: string, tags: { [key: string]: string; }): any; injectHeaders(headers: (name: string | any, value?: string) => any): any; } export interface ISpanRequestTracker extends ISpanTracker { createCommandTracker(context: IRequestContext, commandName: string): ISpanRequestTracker; createCustomTracker(context: IRequestContext, name: string, tags?: { [index: string]: string; }): ITracker; } export declare class DummySpanTracker implements ISpanRequestTracker { context: IRequestContext; durationInMs: number; now: number; tracker: ITrackerAdapter; kind: SpanKind; readonly id: TrackerId; constructor(context: IRequestContext); createCustomTracker(context: IRequestContext, name: string, tags?: { [index: string]: string; }): ITracker; createCommandTracker(context: IRequestContext, commandName: string): ISpanRequestTracker; trackAction(name: string, tags?: { [index: string]: string; }): void; addHttpRequestTags(uri: string, verb: string): void; addProviderCommandTags(address: string, schema: string, tenant: string): void; addServiceCommandTags(serviceName: string, serviceVersion: string): void; addCustomCommandTags(commandType: string, tags: { [key: string]: string; }): void; addTag(key: string, value: string): void; injectHeaders(headers: (name: any, value?: string) => any): void; logError(error: Error, msg?: () => string): void; logInfo(msg: () => string): void; logVerbose(msg: () => string): void; dispose(): void; }