@oneminutelogs/nestjs
v1.0.3
Published
NestJS SDK for OneMinuteLogs
Downloads
32
Maintainers
Readme
@oneminutelogs/nestjs
The official NestJS SDK for OneMinuteLogs.
This package provides a seamless integration with NestJS, including a Global Module, Service for manual logging, and an Interceptor for automatic request logging.
Official Documentation: oneminutestack.com/docs/nestjs
Features
- Global Module: Initialize once, use everywhere via dependency injection.
- Interceptor: Automatically logs every HTTP request with duration, status, and metadata.
- Type-Safe Service: injectable
OneMinuteLogsServicewith all typed log methods (info,error,audit, etc.). - Async Configuration: Support for
forRootAsyncto load config fromConfigService.
Installation
npm install @oneminutelogs/nestjs
# or
yarn add @oneminutelogs/nestjs
# or
pnpm add @oneminutelogs/nestjsQuick Start
1. Import Module
Import OneMinuteLogsModule in your root AppModule.
import { Module } from "@nestjs/common";
import { OneMinuteLogsModule } from "@oneminutelogs/nestjs";
@Module({
imports: [
OneMinuteLogsModule.forRoot({
apiKey: process.env.OML_API_KEY!,
appName: "my-nestjs-service",
environment: process.env.NODE_ENV || "development"
}),
],
})
export class AppModule {}2. Automatic Request Logging
Bind the OneMinuteLogsInterceptor globally in your main.ts or as a global provider.
Option A: In main.ts
import { OneMinuteLogsInterceptor, OneMinuteLogsService } from "@oneminutelogs/nestjs";
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const omlService = app.get(OneMinuteLogsService);
app.useGlobalInterceptors(new OneMinuteLogsInterceptor(omlService));
await app.listen(3000);
}
bootstrap();Option B: As a Provider (Recommended)
import { Module } from "@nestjs/common";
import { APP_INTERCEPTOR } from "@nestjs/core";
import { OneMinuteLogsModule, OneMinuteLogsInterceptor } from "@oneminutelogs/nestjs";
@Module({
imports: [
OneMinuteLogsModule.forRoot({ /* ... */ }),
],
providers: [
{
provide: APP_INTERCEPTOR,
useClass: OneMinuteLogsInterceptor,
},
],
})
export class AppModule {}3. Manual Logging
Inject OneMinuteLogsService into any provider or controller.
import { Injectable } from "@nestjs/common";
import { OneMinuteLogsService } from "@oneminutelogs/nestjs";
@Injectable()
export class AuthService {
constructor(private readonly logger: OneMinuteLogsService) {}
async validateUser(username: string) {
// Info log
await this.logger.info({ message: `Validating user ${username}` });
// Security Audit
await this.logger.audit({
message: "Login attempt",
security: {
auth_status: "pending",
user_id: username
}
});
}
}Async Configuration
If you need to load configuration asynchronously (e.g., from @nestjs/config), use forRootAsync.
import { ConfigModule, ConfigService } from "@nestjs/config";
OneMinuteLogsModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
apiKey: configService.getOrThrow("OML_API_KEY"),
appName: configService.get("APP_NAME"),
}),
inject: [ConfigService],
});API Reference
OneMinuteLogsService
info(payload)error(payload)warning(payload)audit(payload)metric(payload)debug(payload)success(payload)send(payload)(Generic)get(filters)(Query logs)stream(filters)(Stream logs)
Support
If you have any questions or need assistance, please contact us at [email protected].
