@sorrir/sorrir-logging
Version:
Logging repository for SORRIR projects.
58 lines (57 loc) • 2.54 kB
TypeScript
import * as logger from "winston";
export declare enum Stakeholder {
USER = "USER",
SYSTEM = "SYSTEM"
}
export declare type SystemContextStripped = {
area: "execution" | "operation" | "orchestration" | "resilience" | "unknown";
};
export declare type SystemContext = SystemContextStripped & {
function: string;
file: string;
};
export declare type ApplicationContext = {
unit: string;
component: string;
degradationMode: string;
};
export declare enum LogLevel {
info = "info",
debug = "debug",
warn = "warn",
error = "error"
}
export declare type context<S extends Stakeholder> = {
stakeholder: S;
contextFields: S extends Stakeholder.USER ? ApplicationContext : SystemContext;
};
export interface LogEntry<S extends Stakeholder> extends context<S> {
context: context<S>;
host: string;
data: Record<string, unknown>;
}
export interface SorrirLog<S extends Stakeholder> {
(level: LogLevel, message: string, data: Record<string, unknown>, contextFields: S extends Stakeholder.USER ? ApplicationContext : SystemContextStripped): logger.Logger;
}
export interface SorrirLogConfigured<S extends Stakeholder> {
(level: LogLevel, stakeholder: S, message: string, data: Record<string, unknown>): logger.Logger;
}
export interface SorrirLogLevel<S extends Stakeholder> {
(stakeholder: S, message: string, data: Record<string, unknown>, contextFields?: S extends Stakeholder.USER ? ApplicationContext : SystemContextStripped): logger.Logger;
}
export declare const sorrirLogger: logger.Logger;
/**
* The logger aqcuired by this method logs to stdout if the app runs in
* production of if either one of SORRIR_ES_URL, SORRIR_ES_USER or SORRIR_ES_PASSWORD
* are not set.
* Otherwise it logs to the specified Elasticsearch instance.
*/
export declare function getLogger(): logger.Logger;
export declare function configLogger(context: SystemContextStripped | ApplicationContext): void;
export declare const log: SorrirLog<Stakeholder.USER | Stakeholder.SYSTEM>;
export declare const logCompact: SorrirLogConfigured<Stakeholder.USER | Stakeholder.SYSTEM>;
export declare const debug: SorrirLogLevel<Stakeholder.USER | Stakeholder.SYSTEM>;
export declare const warn: SorrirLogLevel<Stakeholder.USER | Stakeholder.SYSTEM>;
export declare const error: SorrirLogLevel<Stakeholder.USER | Stakeholder.SYSTEM>;
export declare const info: SorrirLogLevel<Stakeholder.USER | Stakeholder.SYSTEM>;
export declare const logDefault: (level: LogLevel, message: string) => logger.Logger;