@ipa-schema/logging
v1.0.0
Published
logging facade and schema types for ipa
Readme
@ipa-schema/logging
Zero-dependency logging facade for TypeScript/JavaScript with support for multiple transports, log levels, and both Node.js and browser environments.
Features
- Zero runtime dependencies - Only devDependencies
- Multiple log levels - DEBUG, INFO, WARN, ERROR, NO
- Transport abstraction - Console, File, Remote, or custom transports
- Singleton facade -
getLogger(id)returns same instance per ID - Environment detection - Works in Node.js and browsers
- Caller location - Automatic stack trace capture
- TypeScript first - Full type definitions included
Installation
npm install @ipa-schema/logging
# or
pnpm add @ipa-schema/logging
# or
bun add @ipa-schema/loggingQuick Start
import { getLogger, LogLevel } from '@ipa-schema/logging'
const log = getLogger('my-app')
log.i('Application started')
log.d('Debug info', { userId: 123 })
log.w('Cache miss for key', 'user:123')
log.e('Failed to connect', error)API
Log Levels
enum LogLevel {
DEBUG = 10,
INFO = 20,
WARN = 30,
ERROR = 40,
NO = Number.MAX_SAFE_INTEGER
}Facade Functions
| Function | Description |
|----------|-------------|
| getLogger(id, options?) | Get or create logger singleton |
| addLogger(logger) | Register external logger instance |
| setDefaultTransports(transport[]) | Set transports for new loggers |
| addGlobalTransport(transport[]) | Add transport to all existing loggers |
| clearLoggers() | Clear all registered loggers (testing) |
Logger Methods
| Method | Level | Description |
|--------|-------|-------------|
| logger.d(...args) | DEBUG | Detailed debug info |
| logger.i(...args) | INFO | General information |
| logger.w(...args) | WARN | Warning conditions |
| logger.e(...args) | ERROR | Error conditions |
| logger.addTransport(t) | - | Add transport |
| logger.removeTransport(t) | - | Remove transport |
Custom Transport
import { Transport, LogEntry, LogLevel } from '@ipa-schema/logging'
class RemoteTransport implements Transport {
send(entry: LogEntry): void {
fetch('/api/logs', {
method: 'POST',
body: JSON.stringify(entry),
})
}
}
// Use globally
import { addGlobalTransport } from '@ipa-schema/logging'
addGlobalTransport(new RemoteTransport())
// Or per logger
const log = getLogger('api', { transports: [new RemoteTransport()] })Set Global Log Level
import { getLogger, LogLevel } from '@ipa-schema/logging'
const log = getLogger('my-app', { level: LogLevel.DEBUG })
// Or change at runtime
log.level = LogLevel.WARNSubpath Exports
import { LogLevel } from '@ipa-schema/logging/levels'
import { ConsoleTransport } from '@ipa-schema/logging/transport'
import { getLogger } from '@ipa-schema/logging/facade'
import { Logger } from '@ipa-schema/logging/logger'
import { traceCaller } from '@ipa-schema/logging/stack'
import { detectEnv } from '@ipa-schema/logging/env'Testing
bun testLicense
MIT
