UNPKG

logjet

Version:

Structured, async TypeScript logger with console, file, HTTP transports and NestJS support

108 lines (81 loc) • 3.11 kB
# logjet > āš ļø WARNING: This package is experimental and not yet production-ready. > Use at your own risk. Breaking changes may occur at any time. > šŸš€ A powerful, framework-agnostic structured logger with JSON output, multi-transport support (console, file, HTTP), async logging, Bull-based retry queue, and optional NestJS integration. --- ## ✨ Features - āœ… **Structured JSON logs** – ideal for observability and log aggregation - šŸ“¦ **Multi-transport** – supports `console`, `file`, and `HTTP` transports - šŸ” **Retry mechanism** – async HTTP logs are queued via Bull if delivery fails - āš™ļø **Log levels** – `info`, `warn`, `error`, `debug` - šŸ’” **Pluggable architecture** – easily extend with custom transports - 🧱 **NestJS wrapper module** – optional `LoggerModule` for drop-in integration --- ## šŸ“¦ Installation ```bash # install core logger npm install logjet # if using NestJS npm install @nestjs/common ``` šŸ› ļø Usage Basic Setup ``` import { Logger } from 'logjet'; const logger = new Logger({ level: 'info', transports: [ 'console', 'file', { type: 'http', url: 'https://your-log-server.com/logs', bull: { redisUrl: 'redis://localhost:6379', queueName: 'logjet-queue' } } ] }); logger.info('Server started', { port: 3000 }); logger.error('Something failed', { error: err }); ``` āš™ļø Configuration | Option | Type | Description | | --------------------- | ---------------------- | ------------------------------------------------------------------ | | `level` | `string` | Minimum log level (`debug`, `info`, `warn`, `error`) | | `transports` | `string[] \| object[]` | List of transports (`console`, `file`, or `{ type: 'http', ... }`) | | `filePath` | `string` | Path for file logs (only if `file` transport is used) | | `http.url` | `string` | Target endpoint for HTTP logging | | `http.bull.redisUrl` | `string` | Redis URL for Bull queue | | `http.bull.queueName` | `string` | Queue name for Bull retry logic | šŸš€ NestJS Integration (Optional) ``` // app.module.ts import { LoggerModule } from 'logjet/nest'; @Module({ imports: [ LoggerModule.forRoot({ level: 'debug', transports: ['console', 'file'] }) ], providers: [AppService], }) export class AppModule {} ``` Inject it anywhere using: ``` import { InjectLogger, LogjetLoggerService } from 'logjet/nest'; @Injectable() export class SomeService { constructor( @InjectLogger() private readonly logger: LogjetLoggerService ) {} someMethod() { this.logger.warn('This is from NestJS logger'); } } ``` 🧠 Tip If using NestJS, ensure @nestjs/common is installed in your host project. logjet declares it as a peer dependency.