@connectedcars/logutil
Version:
Simple log formatting for Node
45 lines (44 loc) • 1.4 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
export declare enum MetricType {
GAUGE = "GAUGE",
CUMULATIVE = "CUMULATIVE"
}
interface BaseMetric {
name: string;
labels?: Record<string, unknown>;
startTime?: number;
endTime?: number;
}
type ReducerFn = (arr: number[]) => number;
interface GaugeMetric extends BaseMetric {
type: MetricType.GAUGE;
value: number | number[];
reducerFn?: ReducerFn;
}
interface CumulativeMetric extends BaseMetric {
type: MetricType.CUMULATIVE;
value: number;
startTime: number;
}
type Metric = GaugeMetric | CumulativeMetric;
type FilteredMetric = Omit<Metric, 'value'> & {
value: number;
endTime: number;
};
export declare class MetricRegistry extends EventEmitter {
private metrics;
logMetrics(): void;
getMetrics(): FilteredMetric[];
gauge(name: string, value: number, labels?: Record<string, unknown>, reducerFn?: ReducerFn | null): void;
cumulative(name: string, value: number, labels?: Record<string, unknown>): void;
getMetric(name: string): FilteredMetric[];
clearMetric(name: string): void;
getMetricNames(): string[];
private convertTimestampToIsoString;
private createKey;
private formatLabels;
}
export declare function getMetricRegistry(delay?: number): MetricRegistry;
export declare function clearMetricRegistry(): void;
export {};