@zebrains/nest-loki-logger
v0.0.18
Published
Middleware для логирования запросов в loki
Downloads
18
Readme
@zebrains/nest-loki-logger
nest-loki-logger - это middleware для NestJS, который позволяет логировать запросы и ответы в Loki. Этот пакет также предоставляет сервис для логирования кастомных событий.
Установка
Установите пакет через npm:
npm install @zebrains/nest-loki-logger
Или через yarn:
yarn add@zebrains/nest-loki-logger
Использование
Подключение Middleware
Импортируйте LokiService и LoggingMiddleware в ваш модуль:
import { Module, MiddlewareConsumer, NestModule } from "@nestjs/common";
import { LokiService } from "loki-logger-middleware";
import { LoggingMiddleware } from "loki-logger-middleware";
@Module({
providers: [LokiService],
})
export class AppModule implements NestModule {
constructor(private readonly lokiService: LokiService) {}
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggingMiddleware).forRoutes("*");
}
}
Настройте параметры LokiService в вашем модуле:
import { Module } from "@nestjs/common";
import { LokiService } from "loki-logger-middleware";
@Module({
imports: [],
providers: [
{
provide: LokiService,
useFactory: () => {
return LokiService.forRoot({
lokiUrl: "http://localhost:3100",
lokiUsername: "your-username",
lokiPassword: "your-password",
labels: { app: "my-nest-app" },
logToConsole: true,
gzip: true,
});
},
},
],
exports: [LokiService],
})
export class AppModule {}
Логирование кастомных событий
Вы также можете использовать LokiService для логирования кастомных событий. Для этого импортируйте и используйте LokiService в вашем сервисе или контроллере:
import { Controller, Get, Post, Body } from "@nestjs/common";
import { LokiService } from "loki-logger-middleware";
@Controller("example")
export class ExampleController {
constructor(private readonly lokiService: LokiService) {}
@Get()
getExample() {
this.lokiService.log("This is a GET request log", "ExampleController", {
customLabel: "customValue",
});
return "GET request logged";
}
@Post()
postExample(@Body() body: any) {
this.lokiService.log("This is a POST request log", "ExampleController", {
customLabel: "customValue",
});
return "POST request logged";
}
}
Конфигурация LokiService
Параметры, которые можно передать в LokiService.forRoot:
- lokiUrl (string): URL вашего Loki сервера.
- lokiUsername (string): Имя пользователя для аутентификации.
- lokiPassword (string): Пароль для аутентификации.
- labels (object): Дополнительные метки, которые будут добавлены к каждому логу.
- logToConsole (boolean): Логировать ли сообщения в консоль.
- gzip (boolean): Сжимать ли логи перед отправкой в Loki.
Пример использования
import { Module, MiddlewareConsumer, NestModule } from "@nestjs/common";
import { LokiService } from "loki-logger-middleware";
import { LoggingMiddleware } from "loki-logger-middleware";
import { ExampleController } from "./example.controller";
@Module({
controllers: [ExampleController],
providers: [
{
provide: LokiService,
useFactory: () => {
return LokiService.forRoot({
lokiUrl: "http://localhost:3100",
lokiUsername: "your-username",
lokiPassword: "your-password",
labels: { app: "my-nest-app" },
logToConsole: true,
gzip: true,
});
},
},
],
})
export class AppModule implements NestModule {
constructor(private readonly lokiService: LokiService) {}
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggingMiddleware).forRoutes("*");
}
}
import { Controller, Get, Post, Body } from "@nestjs/common";
import { LokiService } from "loki-logger-middleware";
@Controller("example")
export class ExampleController {
constructor(private readonly lokiService: LokiService) {}
@Get()
getExample() {
this.lokiService.log("This is a GET request log", "ExampleController", {
customLabel: "customValue",
});
return "GET request logged";
}
@Post()
postExample(@Body() body: any) {
this.lokiService.log("This is a POST request log", "ExampleController", {
customLabel: "customValue",
});
return "POST request logged";
}
}
С помощью этого пакета вы можете легко добавить логирование запросов и ответов в Loki, а также логировать кастомные события из ваших сервисов и контроллеров.