logger.tsā¢1.72 kB
/**
* Simple Logger Implementation
* Provides structured logging with different levels
*/
import { Logger } from '../types/bitget.js';
export enum LogLevel {
DEBUG = 0,
INFO = 1,
WARN = 2,
ERROR = 3
}
export class SimpleLogger implements Logger {
private level: LogLevel;
constructor(level: LogLevel = LogLevel.INFO) {
this.level = level;
}
private shouldLog(level: LogLevel): boolean {
return level >= this.level;
}
private formatMessage(level: string, message: string, meta?: any): string {
const timestamp = new Date().toISOString();
const metaStr = meta ? ` ${JSON.stringify(meta)}` : '';
return `[${timestamp}] [${level}] ${message}${metaStr}`;
}
debug(message: string, meta?: any): void {
if (this.shouldLog(LogLevel.DEBUG)) {
console.debug(this.formatMessage('DEBUG', message, meta));
}
}
info(message: string, meta?: any): void {
if (this.shouldLog(LogLevel.INFO)) {
console.info(this.formatMessage('INFO', message, meta));
}
}
warn(message: string, meta?: any): void {
if (this.shouldLog(LogLevel.WARN)) {
console.warn(this.formatMessage('WARN', message, meta));
}
}
error(message: string, meta?: any): void {
if (this.shouldLog(LogLevel.ERROR)) {
console.error(this.formatMessage('ERROR', message, meta));
}
}
setLevel(level: LogLevel): void {
this.level = level;
}
}
// Global logger instance
export const logger = new SimpleLogger(
process.env.LOG_LEVEL === 'debug' ? LogLevel.DEBUG :
process.env.LOG_LEVEL === 'info' ? LogLevel.INFO :
process.env.LOG_LEVEL === 'warn' ? LogLevel.WARN :
process.env.LOG_LEVEL === 'error' ? LogLevel.ERROR :
LogLevel.INFO
);