@bernierllc/logging
Version:
A comprehensive logging package with Winston integration for audit and system logging
440 lines • 12.1 kB
TypeScript
import { LogLevel } from '../mocks/coreLogger';
/**
* Runtime configuration for the service logging package
* This extends the core logger configuration with service-specific options
*/
export interface ServiceLoggingRuntimeConfig {
/**
* Global log level for the service logger
* @default "info"
*/
level?: LogLevel | keyof typeof LogLevel | string;
/**
* Enable correlation tracking across async operations
* @default true
*/
enableCorrelation?: boolean;
/**
* Enable data sanitization for sensitive fields
* @default true
*/
sanitize?: boolean;
/**
* Fields to sanitize (will be redacted in logs)
* @default ["password", "token", "secret", "key", "authorization", "cookie", "apiKey", "accessToken", "refreshToken", "creditCard", "ssn", "socialSecurityNumber"]
*/
sanitizeFields?: string[];
/**
* Service context information
*/
context?: {
/**
* Service name
* @default "service-logging"
*/
service?: string;
/**
* Service version
* @default "0.1.12"
*/
version?: string;
/**
* Environment (dev, staging, prod, etc.)
* @default process.env.NODE_ENV || "development"
*/
environment?: string;
/**
* Server hostname
* @default process.env.HOSTNAME || "localhost"
*/
hostname?: string;
/**
* Process ID
* @default process.pid
*/
pid?: number;
/**
* Thread identifier
*/
thread?: string;
/**
* Additional context fields
*/
[key: string]: any;
};
/**
* System logging configuration
*/
system?: {
/**
* Enable system logging
* @default true
*/
enabled?: boolean;
/**
* System log level
* @default "info"
*/
level?: LogLevel | keyof typeof LogLevel | string;
/**
* Console transport configuration
*/
console?: {
/**
* Enable console transport for system logs
* @default true in development, false in production
*/
enabled?: boolean;
/**
* Console log level
* @default "debug"
*/
level?: LogLevel | keyof typeof LogLevel | string;
/**
* Formatter type
* @default "text"
*/
formatter?: 'text' | 'json' | 'structured';
/**
* Formatter options
*/
formatterOptions?: {
prettyPrint?: boolean;
space?: number;
includeStack?: boolean;
colorize?: boolean;
dateFormat?: string;
prefix?: string;
delimiter?: string;
includeTimestamp?: boolean;
includeHostname?: boolean;
};
};
/**
* File transport configuration
*/
file?: {
/**
* Enable file transport for system logs
* @default false in development, true in production
*/
enabled?: boolean;
/**
* Log file path
* @default "logs/system.log"
*/
filename?: string;
/**
* File log level
* @default "info"
*/
level?: LogLevel | keyof typeof LogLevel | string;
/**
* Formatter type
* @default "json"
*/
formatter?: 'text' | 'json' | 'structured';
/**
* Maximum file size before rotation (bytes)
* @default 10485760 (10MB)
*/
maxSize?: number;
/**
* Maximum number of rotated files to keep
* @default 5
*/
maxFiles?: number;
/**
* Create directory if it doesn't exist
* @default true
*/
createDir?: boolean;
/**
* Formatter options
*/
formatterOptions?: {
prettyPrint?: boolean;
space?: number;
includeStack?: boolean;
colorize?: boolean;
dateFormat?: string;
prefix?: string;
delimiter?: string;
includeTimestamp?: boolean;
includeHostname?: boolean;
};
};
/**
* HTTP transport configuration
*/
http?: {
/**
* Enable HTTP transport for system logs
* @default false
*/
enabled?: boolean;
/**
* HTTP endpoint URL
* @required if enabled
*/
url?: string;
/**
* HTTP log level
* @default "warn"
*/
level?: LogLevel | keyof typeof LogLevel | string;
/**
* HTTP headers
*/
headers?: Record<string, string>;
/**
* Request timeout (ms)
* @default 30000
*/
timeout?: number;
/**
* Batch size for sending logs
* @default 100
*/
batchSize?: number;
/**
* Flush interval (ms)
* @default 5000
*/
flushInterval?: number;
/**
* Number of retries on failure
* @default 3
*/
retries?: number;
};
};
/**
* Audit logging configuration
*/
audit?: {
/**
* Enable audit logging
* @default true
*/
enabled?: boolean;
/**
* Audit log level
* @default "info"
*/
level?: LogLevel | keyof typeof LogLevel | string;
/**
* Console transport configuration for audit logs
*/
console?: {
/**
* Enable console transport for audit logs
* @default false
*/
enabled?: boolean;
/**
* Console log level
* @default "info"
*/
level?: LogLevel | keyof typeof LogLevel | string;
/**
* Formatter type
* @default "json"
*/
formatter?: 'text' | 'json' | 'structured';
/**
* Formatter options
*/
formatterOptions?: {
prettyPrint?: boolean;
space?: number;
includeStack?: boolean;
colorize?: boolean;
dateFormat?: string;
prefix?: string;
delimiter?: string;
includeTimestamp?: boolean;
includeHostname?: boolean;
};
};
/**
* File transport configuration for audit logs
*/
file?: {
/**
* Enable file transport for audit logs
* @default true
*/
enabled?: boolean;
/**
* Log file path
* @default "logs/audit.log"
*/
filename?: string;
/**
* File log level
* @default "info"
*/
level?: LogLevel | keyof typeof LogLevel | string;
/**
* Formatter type
* @default "json"
*/
formatter?: 'text' | 'json' | 'structured';
/**
* Maximum file size before rotation (bytes)
* @default 10485760 (10MB)
*/
maxSize?: number;
/**
* Maximum number of rotated files to keep
* @default 5
*/
maxFiles?: number;
/**
* Create directory if it doesn't exist
* @default true
*/
createDir?: boolean;
/**
* Formatter options
*/
formatterOptions?: {
prettyPrint?: boolean;
space?: number;
includeStack?: boolean;
colorize?: boolean;
dateFormat?: string;
prefix?: string;
delimiter?: string;
includeTimestamp?: boolean;
includeHostname?: boolean;
};
};
/**
* Database transport configuration for audit logs
*/
database?: {
/**
* Enable database transport for audit logs
* @default false
*/
enabled?: boolean;
/**
* Database connection string
* @required if enabled
*/
connectionString?: string;
/**
* Database table name
* @default "audit_logs"
*/
tableName?: string;
/**
* Database log level
* @default "info"
*/
level?: LogLevel | keyof typeof LogLevel | string;
/**
* Maximum connection pool size
* @default 10
*/
maxPoolSize?: number;
};
};
/**
* Error handling configuration
*/
errorHandling?: {
/**
* Enable error callback for transport failures
* @default false
*/
enableCallback?: boolean;
/**
* Log transport failures to console
* @default true
*/
logFailures?: boolean;
};
}
/**
* Resolved configuration after merging defaults, config file, and environment variables
*/
export interface ResolvedServiceLoggingConfig {
level: LogLevel;
enableCorrelation: boolean;
sanitize: boolean;
sanitizeFields: string[];
context: {
service: string;
version: string;
environment: string;
hostname: string;
pid: number;
thread?: string | undefined;
[key: string]: any;
};
system: {
enabled: boolean;
level: LogLevel;
console?: {
enabled: boolean;
level: LogLevel;
formatter: string;
formatterOptions?: any;
};
file?: {
enabled: boolean;
filename: string;
level: LogLevel;
formatter: string;
formatterOptions?: any;
maxSize: number;
maxFiles: number;
createDir: boolean;
};
http?: {
enabled: boolean;
url: string;
level: LogLevel;
headers: Record<string, string>;
timeout: number;
batchSize: number;
flushInterval: number;
retries: number;
};
};
audit: {
enabled: boolean;
level: LogLevel;
console?: {
enabled: boolean;
level: LogLevel;
formatter: string;
formatterOptions?: any;
};
file?: {
enabled: boolean;
filename: string;
level: LogLevel;
formatter: string;
formatterOptions?: any;
maxSize: number;
maxFiles: number;
createDir: boolean;
};
database?: {
enabled: boolean;
connectionString: string;
tableName: string;
level: LogLevel;
maxPoolSize: number;
};
};
errorHandling: {
enableCallback: boolean;
logFailures: boolean;
};
}
//# sourceMappingURL=types.d.ts.map