Interfaces
TypeScript interfaces and types used by @shinijs/logger.
ILogger
Main logger interface implemented by CustomLogger and ContextBoundLogger.
typescript
interface ILogger {
log(message: string, context?: string): void;
error(message: string, error?: Error | unknown, context?: LogContext): void;
warn(message: string, meta?: Record<string, unknown>, context?: LogContext): void;
info(message: string, meta?: Record<string, unknown>, context?: LogContext): void;
debug(message: string, meta?: Record<string, unknown>, context?: LogContext): void;
verbose(message: string, meta?: Record<string, unknown>, context?: LogContext): void;
fatal(message: string, meta?: Record<string, unknown>, context?: LogContext): void;
setContext(context: string): void;
getContext(): string;
}Usage
typescript
import type { ILogger } from '@shinijs/logger';
function processWithLogger(logger: ILogger) {
logger.info('Processing...');
}LogLevel
Type representing log levels.
typescript
type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';Values
'trace'- Very detailed debugging information'debug'- Debug messages'info'- Informational messages'warn'- Warning messages'error'- Error messages'fatal'- Fatal errors
LogContext
Type representing log context. Can be a string or a rich context object.
typescript
type LogContext = string | LogContextObject;String Context
typescript
this.logger.info('Message', {}, 'MyService');Object Context
typescript
this.logger.info('Message', {}, {
requestId: 'req-123',
userId: 'user-456',
method: 'POST',
url: '/api/users',
});LogContextObject
Interface for rich context objects.
typescript
interface LogContextObject {
requestId?: string;
userId?: string;
userEmail?: string;
ip?: string;
userAgent?: string;
method?: string;
url?: string;
statusCode?: number;
responseTime?: number;
[key: string]: unknown;
}Properties
requestId- Request identifieruserId- User identifieruserEmail- User emailip- Client IP addressuserAgent- User agent stringmethod- HTTP methodurl- Request URLstatusCode- HTTP status coderesponseTime- Response time in milliseconds[key: string]: unknown- Additional custom properties
Example
typescript
this.logger.info('Request processed', {}, {
requestId: 'req-123',
userId: 'user-456',
method: 'POST',
url: '/api/users',
statusCode: 201,
responseTime: 45,
customField: 'value',
});LogMetadata
Interface for log metadata.
typescript
interface LogMetadata {
context?: string;
timestamp?: string;
level?: LogLevel;
stack?: string;
[key: string]: unknown;
}Properties
context- Log contexttimestamp- Timestamp stringlevel- Log levelstack- Error stack trace[key: string]: unknown- Additional metadata
Importing Types
typescript
import type {
ILogger,
LogLevel,
LogContext,
LogContextObject,
LogMetadata,
} from '@shinijs/logger';Type Guards
Checking Log Level
typescript
function isValidLogLevel(level: string): level is LogLevel {
return ['error', 'warn', 'info', 'debug'].includes(level);
}Checking Context Type
typescript
function isContextObject(context: LogContext): context is LogContextObject {
return typeof context === 'object' && context !== null;
}See Also
- CustomLogger - Logger implementation
- LoggerFactory - Factory for context-bound loggers
- Configuration - Configuration types