From 779029148e32122f2e5399d86e061c5aa098ca3c Mon Sep 17 00:00:00 2001 From: Brooooooklyn Date: Fri, 17 Jan 2025 12:12:14 +0000 Subject: [PATCH] refactor(server): enhance the Logger usage (#9763) --- packages/backend/server/src/app.ts | 4 ++++ packages/backend/server/src/base/logger/service.ts | 8 ++++---- packages/backend/server/src/base/mailer/mailer.ts | 9 ++++----- packages/backend/server/src/core/doc/job.ts | 9 +++------ .../backend/server/src/plugins/gcloud/logging/service.ts | 5 +---- 5 files changed, 16 insertions(+), 19 deletions(-) diff --git a/packages/backend/server/src/app.ts b/packages/backend/server/src/app.ts index 1175eee16c..36833e9c6f 100644 --- a/packages/backend/server/src/app.ts +++ b/packages/backend/server/src/app.ts @@ -4,6 +4,7 @@ import cookieParser from 'cookie-parser'; import graphqlUploadExpress from 'graphql-upload/graphqlUploadExpress.mjs'; import { + AFFiNELogger, CacheInterceptor, CloudThrottlerGuard, GlobalExceptionFilter, @@ -20,8 +21,11 @@ export async function createApp() { cors: true, rawBody: true, bodyParser: true, + bufferLogs: true, }); + app.useLogger(app.get(AFFiNELogger)); + if (AFFiNE.server.path) { app.setGlobalPrefix(AFFiNE.server.path); } diff --git a/packages/backend/server/src/base/logger/service.ts b/packages/backend/server/src/base/logger/service.ts index 8b9b958756..261bbf0ca2 100644 --- a/packages/backend/server/src/base/logger/service.ts +++ b/packages/backend/server/src/base/logger/service.ts @@ -1,6 +1,6 @@ -import { ConsoleLogger, Injectable, Scope } from '@nestjs/common'; +import { ConsoleLogger, Injectable } from '@nestjs/common'; -@Injectable({ - scope: Scope.TRANSIENT, -}) +// DO NOT use this Logger directly +// Use it via this way: `private readonly logger = new Logger(MyService.name)` +@Injectable() export class AFFiNELogger extends ConsoleLogger {} diff --git a/packages/backend/server/src/base/mailer/mailer.ts b/packages/backend/server/src/base/mailer/mailer.ts index b07f822a7e..eed4a4f4d9 100644 --- a/packages/backend/server/src/base/mailer/mailer.ts +++ b/packages/backend/server/src/base/mailer/mailer.ts @@ -1,9 +1,8 @@ -import { FactoryProvider } from '@nestjs/common'; +import { FactoryProvider, Logger } from '@nestjs/common'; import { createTransport, Transporter } from 'nodemailer'; import SMTPTransport from 'nodemailer/lib/smtp-transport'; import { Config } from '../config'; -import { AFFiNELogger } from '../logger'; export const MAILER_SERVICE = Symbol('MAILER_SERVICE'); @@ -15,9 +14,9 @@ export const MAILER: FactoryProvider< Transporter | undefined > = { provide: MAILER_SERVICE, - useFactory: (config: Config, logger: AFFiNELogger) => { + useFactory: (config: Config) => { if (config.mailer) { - logger.setContext('Mailer'); + const logger = new Logger('Mailer'); const auth = config.mailer.auth; if (auth && auth.user && !('pass' in auth)) { logger.warn( @@ -30,5 +29,5 @@ export const MAILER: FactoryProvider< return undefined; } }, - inject: [Config, AFFiNELogger], + inject: [Config], }; diff --git a/packages/backend/server/src/core/doc/job.ts b/packages/backend/server/src/core/doc/job.ts index 7b4d689a9c..f4551f1484 100644 --- a/packages/backend/server/src/core/doc/job.ts +++ b/packages/backend/server/src/core/doc/job.ts @@ -1,9 +1,8 @@ -import { Injectable, OnModuleInit, Optional } from '@nestjs/common'; +import { Injectable, Logger, OnModuleInit, Optional } from '@nestjs/common'; import { Cron, CronExpression, SchedulerRegistry } from '@nestjs/schedule'; import { PrismaClient } from '@prisma/client'; import { - AFFiNELogger, CallMetric, Config, type EventPayload, @@ -15,16 +14,14 @@ import { PgWorkspaceDocStorageAdapter } from './adapters/workspace'; @Injectable() export class DocStorageCronJob implements OnModuleInit { private busy = false; + private readonly logger = new Logger(DocStorageCronJob.name); constructor( private readonly config: Config, private readonly db: PrismaClient, private readonly workspace: PgWorkspaceDocStorageAdapter, - private readonly logger: AFFiNELogger, @Optional() private readonly registry?: SchedulerRegistry - ) { - this.logger.setContext(DocStorageCronJob.name); - } + ) {} onModuleInit() { if (this.registry && this.config.doc.manager.enableUpdateAutoMerging) { diff --git a/packages/backend/server/src/plugins/gcloud/logging/service.ts b/packages/backend/server/src/plugins/gcloud/logging/service.ts index bb0e44cf4d..d7da394f9e 100644 --- a/packages/backend/server/src/plugins/gcloud/logging/service.ts +++ b/packages/backend/server/src/plugins/gcloud/logging/service.ts @@ -1,5 +1,5 @@ import { LoggingWinston } from '@google-cloud/logging-winston'; -import { LoggerService, Provider, Scope } from '@nestjs/common'; +import { LoggerService, Provider } from '@nestjs/common'; import { createLogger, transports } from 'winston'; import { AFFiNELogger as LoggerProvide } from '../../../base/logger'; @@ -20,7 +20,4 @@ export const loggerProvider: Provider = { }); return new AFFiNELogger(instance); }, - // use transient to make sure the logger is created for each di context - // to make the `setContext` method works as expected - scope: Scope.TRANSIENT, };