| 241 | } |
| 242 | |
| 243 | export class ConsoleLogger extends MastraLogger { |
| 244 | protected component?: RegisteredLogger; |
| 245 | protected filter?: LogFilter; |
| 246 | |
| 247 | constructor(options: ConsoleLoggerOptions = {}) { |
| 248 | super(options); |
| 249 | this.component = options.component; |
| 250 | this.filter = options.filter; |
| 251 | } |
| 252 | |
| 253 | child(componentOrBindings: RegisteredLogger | Record<string, unknown>): ConsoleLogger { |
| 254 | const component = |
| 255 | typeof componentOrBindings === 'string' |
| 256 | ? componentOrBindings |
| 257 | : ((componentOrBindings?.component as RegisteredLogger) ?? this.component); |
| 258 | return new ConsoleLogger({ |
| 259 | name: this.name, |
| 260 | level: this.level, |
| 261 | component, |
| 262 | filter: this.filter, |
| 263 | }); |
| 264 | } |
| 265 | |
| 266 | private shouldLog(level: LogLevel, message: string, args: unknown[]): boolean { |
| 267 | if (!this.filter) return true; |
| 268 | try { |
| 269 | return this.filter({ component: this.component, level, message, args }); |
| 270 | } catch (e) { |
| 271 | console.error(`[Logger] Filter error for component=${this.component} level=${level}:`, e); |
| 272 | return true; |
| 273 | } |
| 274 | } |
| 275 | |
| 276 | private prefix(): string { |
| 277 | return this.component ? `[${this.component}] ` : ''; |
| 278 | } |
| 279 | |
| 280 | debug(message: string, ...args: any[]): void { |
| 281 | if (this.level === LogLevel.DEBUG && this.shouldLog(LogLevel.DEBUG, message, args)) { |
| 282 | console.info(`${this.prefix()}${message}`, ...args); |
| 283 | } |
| 284 | } |
| 285 | |
| 286 | info(message: string, ...args: any[]): void { |
| 287 | if ( |
| 288 | (this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) && |
| 289 | this.shouldLog(LogLevel.INFO, message, args) |
| 290 | ) { |
| 291 | console.info(`${this.prefix()}${message}`, ...args); |
| 292 | } |
| 293 | } |
| 294 | |
| 295 | warn(message: string, ...args: any[]): void { |
| 296 | if ( |
| 297 | (this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) && |
| 298 | this.shouldLog(LogLevel.WARN, message, args) |
| 299 | ) { |
| 300 | console.warn(`${this.prefix()}${message}`, ...args); |
nothing calls this directly
no outgoing calls
no test coverage detected
searching dependent graphs…