vaporwaver-ts
Version:
TypeScript version of the Vaporwaver Python library. Vaporwaver is a Python library for generating vaporwave image art.
59 lines • 1.93 kB
JavaScript
import { writeFileSync, appendFileSync, existsSync, mkdirSync } from 'fs';
import { join, dirname } from 'path';
import { fileURLToPath } from 'url';
export class Logger {
constructor() {
const rootDir = dirname(fileURLToPath(import.meta.url));
const logsDir = join(rootDir, '..', '..', 'logs');
// Ensure logs directory exists
if (!existsSync(logsDir)) {
mkdirSync(logsDir, { recursive: true });
}
this.logFile = join(logsDir, 'vaporwaver.log');
this.debugMode = process.env.VAPORWAVER_DEBUG === 'true';
// Initialize log file
if (!existsSync(this.logFile)) {
writeFileSync(this.logFile, '');
}
}
static getInstance() {
if (!Logger.instance) {
Logger.instance = new Logger();
}
return Logger.instance;
}
formatMessage(level, message, meta) {
const timestamp = new Date().toISOString();
const metaStr = meta ? `\n${JSON.stringify(meta, null, 2)}` : '';
return `[${timestamp}] ${level}: ${message}${metaStr}\n`;
}
log(level, message, meta) {
const formattedMessage = this.formatMessage(level, message, meta);
appendFileSync(this.logFile, formattedMessage);
if (this.debugMode || level === 'ERROR') {
console.log(formattedMessage);
}
}
info(message, meta) {
this.log('INFO', message, meta);
}
warn(message, meta) {
this.log('WARN', message, meta);
}
error(message, meta) {
this.log('ERROR', message, meta);
}
debug(message, meta) {
if (this.debugMode) {
this.log('DEBUG', message, meta);
}
}
clearLogs() {
writeFileSync(this.logFile, '');
}
setDebugMode(enabled) {
this.debugMode = enabled;
}
}
export const logger = Logger.getInstance();
//# sourceMappingURL=logger.js.map