logjet
v0.0.3
Published
Structured, async TypeScript logger with console, file, HTTP transports and NestJS support
Maintainers
Readme
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, andHTTPtransports - 🔁 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
LoggerModulefor drop-in integration
📦 Installation
# 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.
