tasq/node_modules/agentic-flow/dist/utils/logger.js

58 lines
1.8 KiB
JavaScript

class Logger {
context = {};
setContext(ctx) {
this.context = { ...this.context, ...ctx };
}
log(level, message, data) {
// Skip all logs if QUIET mode is enabled (unless it's an error)
if (process.env.QUIET === 'true' && level !== 'error') {
return;
}
const timestamp = new Date().toISOString();
const logEntry = {
timestamp,
level,
message,
...this.context,
...data
};
// Structured JSON logging for production
if (process.env.NODE_ENV === 'production') {
console.log(JSON.stringify(logEntry));
}
else {
// Human-readable for development
const prefix = `[${timestamp}] ${level.toUpperCase()}`;
const contextStr = Object.keys({ ...this.context, ...data }).length > 0
? ` ${JSON.stringify({ ...this.context, ...data })}`
: '';
console.log(`${prefix}: ${message}${contextStr}`);
}
}
debug(message, data) {
// Skip debug logs unless DEBUG or VERBOSE environment variable is set
if (!process.env.DEBUG && !process.env.VERBOSE) {
return;
}
this.log('debug', message, data);
}
info(message, data) {
// Skip info logs unless VERBOSE is set
if (!process.env.DEBUG && !process.env.VERBOSE) {
return;
}
this.log('info', message, data);
}
warn(message, data) {
// Skip warnings unless VERBOSE is set
if (!process.env.DEBUG && !process.env.VERBOSE) {
return;
}
this.log('warn', message, data);
}
error(message, data) {
this.log('error', message, data);
}
}
export const logger = new Logger();
//# sourceMappingURL=logger.js.map