UNPKG

@the-hw-app/logger

Version:

A logger made for internal use by The Homework App.

197 lines (196 loc) 4.9 kB
/** * @name MiddlewareArgs * @description Stores the arguments that are passed to the middleware. * @interface */ declare type MiddlewareArgs = { swaggerSpecs: any; }; /** * @name LogLevel * @description Stores the log levels that can be used in the application. * @enum {string} * @readonly */ declare enum LogLevel { emergency = 0, alert = 1, critical = 2, error = 3, warning = 4, notice = 5, info = 6, debug = 7 } /** * @name logLevel * @description The log level that is used in the application in the form of types. Can be used as a type. */ declare type logLevel = keyof typeof LogLevel; /** * @name LogArgs * @description Stores the argument structure that are passed to the log(...). * @type */ declare type LogArgs = { level: logLevel; message: string; [key: string | number]: any; }; /** * @class Logger * @description Serves as a wrapper for the graylog2 library and console logging. * @author [KryptoBlack] <https://github.com/KryptoBlack> * @version 1.0.0 * @license MIT * @example * import { Logger } from 'logger'; * let logger: Logger = new Logger("xyz-service"); * logger.info('500 Server Failed', { status: 500 }); * logger.close(); * @todo Add a config to allow debug level logging to use graylog at production/staging environment. * @todo Handle Invalid environment in a better way. */ declare class Logger { private readonly gelfLogger; private NODE_ENV; /** * @name constructor * @description This is the constructor for the Logger class. * @param hostname {string} * @param env {number} * @memberof Logger */ constructor(o: { hostname: string; host: string; port: number; env?: string; }); /** * @name log * @description This function is used to log messages by passing the level. * @param level * @param message * @param meta * @returns void * @memberof Logger * @example * @todo better way to handle keyword args. * import { Logger } from 'logger'; * let logger: Logger = new Logger("xyz-service"); * logger.log(LogLevel.info, '500 Server Failed', { status: 500 }); * logger.close(); */ log({ level, message, ...meta }: LogArgs): void; /** * @name serve * @description Serves middleware service for the logger. * @param {MiddlewareArgs} o * @returns {any} * @memberof Logger * @example * @todo add a strict type for return value. * @todo handle validation of key level in a better way. * import { Logger } from 'logger'; * * ... * * let logger: Logger = new Logger("xyz-service"); * const options = { * definition: { * openapi: "3.0.0", * info: { ... }, * ... * }; * const swaggerSpecs: object = swaggerJsdoc(options); * app.use(logger.serve({ swaggerSpecs: swaggerSpecs })); * * ... * */ serve(o: MiddlewareArgs): any; /** * * @name console * @description This function is used to return console logger by level. * @memberof Logger * @param level */ private console; /** * @param level {logLevel} * @param message {string} * @param meta {any} * @description This function is used to decide what to call the graylog function or console function. * @private * @returns void * @memberof Logger */ private _log; /** * @name info * @param message * @param meta * @returns void * @memberof Logger */ info(message: string, ...meta: any): void; /** * @name error * @param message * @param meta * @returns void * @memberof Logger */ error(message: string, ...meta: any): void; /** * @name emergency * @param message * @param meta * @returns void * @memberof Logger */ emergency(message: string, ...meta: any): void; /** * @name alert * @param message * @param meta * @returns void * @memberof Logger */ alert(message: string, ...meta: any): void; /** * @name critical * @param message * @param meta * @returns void * @memberof Logger */ critical(message: string, ...meta: any): void; /** * @name warning * @param message * @param meta * @returns void * @memberof Logger */ warning(message: string, ...meta: any): void; /** * @name notice * @param message * @param meta * @returns void * @memberof Logger */ notice(message: string, ...meta: any): void; /** * @name debug * @param message * @param meta * @returns void * @memberof Logger */ debug(message: string, ...meta: any): void; } export { Logger, LogLevel, };