UNPKG

@genie-solutions/genie-logger

Version:

Reusable Node.js logger for platform Lambda services.

100 lines (75 loc) 2.29 kB
# Genie logger Library for Node.js services Reusable Node.js logger for platform Lambda services. ## Installing To install this library into your project ```bash $ npm i @genie-solutions/genie-logger ``` ### Dependencies This library is built using uuid, winston and winston-transport ## Basic Examples ```ts import { createLoggerFromContext } from "./services/logging"; const createLogger = createLoggerFromContext(APP_NAME, STAGE, LOG_LEVEL); const logger = createLogger(context.awsRequestId); logger.info({ type: EventType.CreditAssessed, payload: { threadId, tenantId, creditBalance, calculatedCost: cost } }); logger.error({ type: EventType.CreditServiceError, error: { message: error.message } }); logger.warn({ type: EventType.CreditServiceWarning, error: { message: error.message } }); logger.debug({ type: EventType.CreditServiceDebug, error: { message: error.message } }); ``` ## Profiling Examples ```ts // // Start profile of 'test' // logger.profile('test'); setTimeout(function () { // // Stop profile of 'test'. Logging will now take place: // '17 Jan 21:00:00 - info: test duration=1000ms' // logger.profile('test'); }, 1000); ``` This will output ```{"level":"info","durationMs":2311,"message":"test"}``` in the log ## Profiling Timer example ```ts // Returns an object corresponding to a specific timing. When done // is called the timer will finish and log the duration. e.g.: // const profiler = logger.startTimer(); setTimeout(function () { profiler.done({ message: 'Logging message' }); }, ``` This will output ```{"message":"Logging message","level":"info","durationMs":14990}``` in the log ## Extra metadata inthe log The default logger will include the three parameter metadata(APP_NAME, STAGE, LOG_LEVEL) in the log, to extend this with extra metadata, use the extend function ```ts const logger = createLogger(context.awsRequestId).extend( pick({ requestId: "451" }) ); logger.info("Child logging"); ``` This will output following log: ``` {"requestId":"451","message":"Child logging","level":"info"} ```