Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 16x 16x 16x 16x 16x 37x 37x 16x 16x 287x 287x 287x 40x 40x 287x 16x 16x | import { getEnvVariable } from "./shared"; import winston from "winston"; // Define log levels with corresponding priorities const LOG_LEVELS = { error: 0, // Highest priority - critical errors warn: 1, // Warning messages info: 2, // General information debug: 3, // Debug information } as const; // Define colors for each log level for better visibility const LOG_COLORS = { error: "red", // Critical errors in red warn: "yellow", // Warnings in yellow info: "blue", // Info in blue debug: "green", // Debug in green }; /** * Get the current log level from environment variables. * Defaults to 'info' if not set or invalid. * @returns {keyof typeof LOG_LEVELS} The current log level */ export const getLogLevel = (): keyof typeof LOG_LEVELS => { const envLevel = getEnvVariable( "COMPOSIO_LOGGING_LEVEL", "info" )?.toLowerCase(); return envLevel && envLevel in LOG_LEVELS ? (envLevel as keyof typeof LOG_LEVELS) : "info"; }; // Configure winston colors winston.addColors(LOG_COLORS); // Create custom log format const logFormat = winston.format.combine( winston.format.timestamp(), winston.format.colorize(), winston.format.printf(({ timestamp, level, message, ...metadata }) => { // Format timestamp for readability const formattedTime = timestamp.slice(5, 22).replace("T", " "); // Handle metadata serialization let metadataStr = ""; if (Object.keys(metadata).length) { try { metadataStr = ` - ${JSON.stringify(metadata)}`; } catch { metadataStr = " - [Circular metadata object]"; } } return `[${level}]: ${formattedTime} - ${message}${metadataStr}`; }) ); // Create and configure logger instance const logger = winston.createLogger({ // This can be overridden by the user by setting the COMPOSIO_LOGGING_LEVEL environment variable // Only this or higher priority logs will be shown level: getLogLevel(), levels: LOG_LEVELS, format: logFormat, transports: [ new winston.transports.Console({ handleExceptions: false, handleRejections: false, }), ], exitOnError: false, // Prevent crashes on uncaught exceptions }); export default logger; |