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
JavaScript
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();
};