UNPKG

appwrite-utils-cli

Version:

Appwrite Utility Functions to help with database management, data conversion, data import, migrations, and much more. Meant to be used as a CLI tool, I do not recommend installing this in frontend environments.

47 lines (46 loc) 1.66 kB
import winston from "winston"; import fs from "fs"; import path from "path"; const DEFAULT_LOGGING_CONFIG = { enabled: false, level: "info", console: false, }; let loggingConfig = DEFAULT_LOGGING_CONFIG; export const configureLogging = (config = {}) => { loggingConfig = { ...DEFAULT_LOGGING_CONFIG, ...config }; }; const createLogger = () => { const transports = []; // Add console transport if enabled if (loggingConfig.console) { transports.push(new winston.transports.Console({ format: winston.format.combine(winston.format.colorize(), winston.format.simple()) })); } // Add file transports if logging is enabled if (loggingConfig.enabled) { const logDir = loggingConfig.logDirectory || path.join(process.cwd(), "zlogs"); if (!fs.existsSync(logDir)) { fs.mkdirSync(logDir, { recursive: true }); } transports.push(new winston.transports.File({ filename: path.join(logDir, "error.log"), level: "error", }), new winston.transports.File({ filename: path.join(logDir, "combined.log"), })); } return winston.createLogger({ level: loggingConfig.level, format: winston.format.combine(winston.format.timestamp(), winston.format.errors({ stack: true }), winston.format.json()), defaultMeta: { service: "appwrite-utils-cli" }, transports, silent: !loggingConfig.enabled && !loggingConfig.console, }); }; export let logger = createLogger(); // Recreate logger when config changes export const updateLogger = () => { logger = createLogger(); };