|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import { LogVerbosity } from './constants'; |
|
import { pid } from 'process'; |
|
|
|
const clientVersion = require('../../package.json').version; |
|
|
|
const DEFAULT_LOGGER: Partial<Console> = { |
|
error: (message?: any, ...optionalParams: any[]) => { |
|
console.error('E ' + message, ...optionalParams); |
|
}, |
|
info: (message?: any, ...optionalParams: any[]) => { |
|
console.error('I ' + message, ...optionalParams); |
|
}, |
|
debug: (message?: any, ...optionalParams: any[]) => { |
|
console.error('D ' + message, ...optionalParams); |
|
}, |
|
}; |
|
|
|
let _logger: Partial<Console> = DEFAULT_LOGGER; |
|
let _logVerbosity: LogVerbosity = LogVerbosity.ERROR; |
|
|
|
const verbosityString = |
|
process.env.GRPC_NODE_VERBOSITY ?? process.env.GRPC_VERBOSITY ?? ''; |
|
|
|
switch (verbosityString.toUpperCase()) { |
|
case 'DEBUG': |
|
_logVerbosity = LogVerbosity.DEBUG; |
|
break; |
|
case 'INFO': |
|
_logVerbosity = LogVerbosity.INFO; |
|
break; |
|
case 'ERROR': |
|
_logVerbosity = LogVerbosity.ERROR; |
|
break; |
|
case 'NONE': |
|
_logVerbosity = LogVerbosity.NONE; |
|
break; |
|
default: |
|
|
|
} |
|
|
|
export const getLogger = (): Partial<Console> => { |
|
return _logger; |
|
}; |
|
|
|
export const setLogger = (logger: Partial<Console>): void => { |
|
_logger = logger; |
|
}; |
|
|
|
export const setLoggerVerbosity = (verbosity: LogVerbosity): void => { |
|
_logVerbosity = verbosity; |
|
}; |
|
|
|
|
|
export const log = (severity: LogVerbosity, ...args: any[]): void => { |
|
let logFunction: typeof DEFAULT_LOGGER.error; |
|
if (severity >= _logVerbosity) { |
|
switch (severity) { |
|
case LogVerbosity.DEBUG: |
|
logFunction = _logger.debug; |
|
break; |
|
case LogVerbosity.INFO: |
|
logFunction = _logger.info; |
|
break; |
|
case LogVerbosity.ERROR: |
|
logFunction = _logger.error; |
|
break; |
|
} |
|
|
|
|
|
if (!logFunction) { |
|
logFunction = _logger.error; |
|
} |
|
if (logFunction) { |
|
logFunction.bind(_logger)(...args); |
|
} |
|
} |
|
}; |
|
|
|
const tracersString = |
|
process.env.GRPC_NODE_TRACE ?? process.env.GRPC_TRACE ?? ''; |
|
const enabledTracers = new Set<string>(); |
|
const disabledTracers = new Set<string>(); |
|
for (const tracerName of tracersString.split(',')) { |
|
if (tracerName.startsWith('-')) { |
|
disabledTracers.add(tracerName.substring(1)); |
|
} else { |
|
enabledTracers.add(tracerName); |
|
} |
|
} |
|
const allEnabled = enabledTracers.has('all'); |
|
|
|
export function trace( |
|
severity: LogVerbosity, |
|
tracer: string, |
|
text: string |
|
): void { |
|
if (isTracerEnabled(tracer)) { |
|
log(severity, new Date().toISOString() + ' | v' + clientVersion + ' ' + pid + ' | ' + tracer + ' | ' + text); |
|
} |
|
} |
|
|
|
export function isTracerEnabled(tracer: string): boolean { |
|
return ( |
|
!disabledTracers.has(tracer) && (allEnabled || enabledTracers.has(tracer)) |
|
); |
|
} |
|
|