Журнал задачи в Nest
Сообщения из фонового метода легко теряются среди вывода консоли: нет метки класса, уровень не отделён от случайных отладочных строк других частей приложения. На сервере NodeJS такой поток сложнее фильтровать и читать по журналам.
В Nest для служебных записей
используют Logger
из @nestjs/common.
Его создают на класс задачи
и вызывают метод уровня
log внутри срабатывания
планировщика. Сообщение
получает имя класса и
попадает в общий формат
журнала приложения, а не
в сырой console.log.
Покажем на примере постов:
import { Injectable, Logger } from '@nestjs/common';
import { Cron, CronExpression } from '@nestjs/schedule';
@Injectable()
export class PostTasksService {
private logger = new Logger(PostTasksService.name);
@Cron(CronExpression.EVERY_MINUTE, {
name: 'post-list-minute',
})
handleCron() {
this.logger.log('Post list minute');
}
}
Подключение ScheduleModule.forRoot
и регистрация провайдера
не меняются:
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { PostTasksService } from './post.tasks.service.js';
@Module({
imports: [ScheduleModule.forRoot()],
providers: [PostTasksService],
})
export class AppModule {}
Перенесите запись минутного
шага списка работников
в WorkerTasksService
в журнал приложения с меткой
имени класса вместо вывода
в консоль.