@layr-labs/hourglass-performer
Version:
TypeScript SDK for building Hourglass AVS performers
165 lines • 4.05 kB
TypeScript
import { ILogger } from './logger';
/**
* Log levels
*/
export declare enum LogLevel {
ERROR = "error",
WARN = "warn",
INFO = "info",
DEBUG = "debug",
TRACE = "trace"
}
/**
* Log context interface
*/
export interface LogContext {
/** Correlation ID for tracing across services */
correlationId?: string;
/** Request ID for tracking individual requests */
requestId?: string;
/** Task ID for task-specific logging */
taskId?: string;
/** User ID or performer ID */
performerId?: string;
/** Component or module name */
component?: string;
/** Operation being performed */
operation?: string;
/** Additional custom fields */
[key: string]: any;
}
/**
* Log entry structure
*/
export interface LogEntry {
/** Log level */
level: LogLevel;
/** Log message */
message: string;
/** Timestamp */
timestamp: string;
/** Log context */
context: LogContext;
/** Stack trace for errors */
stack?: string;
/** Additional metadata */
metadata?: any;
}
/**
* Log appender interface
*/
export interface LogAppender {
/** Appender name */
name: string;
/** Write log entry */
write(entry: LogEntry): Promise<void>;
}
/**
* Console log appender with structured output
*/
export declare class ConsoleLogAppender implements LogAppender {
name: string;
write(entry: LogEntry): Promise<void>;
}
/**
* File log appender with JSON format
*/
export declare class FileLogAppender implements LogAppender {
private filePath;
name: string;
constructor(filePath: string);
write(entry: LogEntry): Promise<void>;
}
/**
* Structured logger configuration
*/
export interface StructuredLoggerConfig {
/** Log level */
level?: LogLevel;
/** Default context to include in all logs */
defaultContext?: LogContext;
/** Enable/disable logging */
enabled?: boolean;
/** Log appenders */
appenders?: LogAppender[];
/** Include stack traces for warnings and errors */
includeStack?: boolean;
}
/**
* Enhanced structured logger
*/
export declare class StructuredLogger implements ILogger {
private config;
private appenders;
private correlationIdGenerator;
constructor(config?: StructuredLoggerConfig);
/**
* Create a child logger with additional context
*/
child(context: LogContext): StructuredLogger;
/**
* Generate a new correlation ID
*/
generateCorrelationId(): string;
/**
* Add log appender
*/
addAppender(appender: LogAppender): void;
/**
* Remove log appender
*/
removeAppender(name: string): void;
/**
* Log an error
*/
error(message: string, meta?: any): void;
/**
* Log a warning
*/
warn(message: string, meta?: any): void;
/**
* Log info
*/
info(message: string, meta?: any): void;
/**
* Log debug information
*/
debug(message: string, meta?: any): void;
/**
* Log trace information
*/
trace(message: string, meta?: any): void;
/**
* Log with specific level and context
*/
logWithContext(level: LogLevel, message: string, context: LogContext, meta?: any): void;
/**
* Core logging method
*/
private log;
/**
* Check if we should log at this level
*/
private shouldLog;
/**
* Write log entry to all appenders
*/
private writeToAppenders;
/**
* Create correlation ID generator
*/
private createCorrelationIdGenerator;
/**
* Create request-scoped logger
*/
static forRequest(requestId: string, additionalContext?: LogContext): StructuredLogger;
/**
* Create task-scoped logger
*/
static forTask(taskId: string, additionalContext?: LogContext): StructuredLogger;
/**
* Create component-scoped logger
*/
static forComponent(component: string, additionalContext?: LogContext): StructuredLogger;
}
//# sourceMappingURL=structuredLogger.d.ts.map