@mastra/core
Version:
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.
65 lines • 2.51 kB
TypeScript
import type { MastraError } from '../error/index.js';
import type { LoggerContext } from '../observability/types/logging.js';
import type { LogLevel } from './constants.js';
import type { IMastraLogger } from './logger.js';
import type { BaseLogMessage, LoggerTransport } from './transport.js';
/**
* A transparent wrapper around IMastraLogger that also forwards log calls
* to a LoggerContext (loggerVNext) for observability dual-write.
*
* All existing `this.logger.info(...)` call sites automatically get
* dual-write when this wrapper is injected via `__setLogger()`.
*
* Span-aware: when called inside an executeWithContext() scope, forwards to
* a span-correlated loggerVNext (with traceId/spanId). Otherwise falls back
* to the global loggerVNext (no correlation, still persisted to storage).
*
* Uses a lazy getter function for loggerVNext so it always resolves the
* current LoggerContext at call time (observability may initialize after the logger).
*/
export declare class DualLogger implements IMastraLogger {
#private;
constructor(inner: IMastraLogger, getLoggerVNext?: () => LoggerContext | undefined);
/**
* Set or update the loggerVNext getter.
* Called after observability initializes (which may happen after logger creation).
*/
setLoggerVNext(getLoggerVNext: (() => LoggerContext | undefined) | undefined): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string, ...args: any[]): void;
error(message: string, ...args: any[]): void;
trackException(error: MastraError, metadata?: Record<string, unknown>): void;
getTransports(): Map<string, LoggerTransport>;
listLogs(transportId: string, params?: {
fromDate?: Date;
toDate?: Date;
logLevel?: LogLevel;
filters?: Record<string, any>;
page?: number;
perPage?: number;
}): Promise<{
logs: BaseLogMessage[];
total: number;
page: number;
perPage: number;
hasMore: boolean;
}>;
listLogsByRunId(args: {
transportId: string;
runId: string;
fromDate?: Date;
toDate?: Date;
logLevel?: LogLevel;
filters?: Record<string, any>;
page?: number;
perPage?: number;
}): Promise<{
logs: BaseLogMessage[];
total: number;
page: number;
perPage: number;
hasMore: boolean;
}>;
}
//# sourceMappingURL=dual-logger.d.ts.map