fix(server): disable winston in seflhost instance (#9585)
This commit is contained in:
@@ -1,14 +1,14 @@
|
|||||||
import { Global, Module } from '@nestjs/common';
|
import { Global, Module } from '@nestjs/common';
|
||||||
|
|
||||||
import { ConfigModule } from '../config';
|
import { ConfigModule } from '../config';
|
||||||
import { loggerProvider } from './service';
|
import { AFFiNELogger } from './service';
|
||||||
|
|
||||||
@Global()
|
@Global()
|
||||||
@Module({
|
@Module({
|
||||||
imports: [ConfigModule],
|
imports: [ConfigModule],
|
||||||
providers: [loggerProvider],
|
providers: [AFFiNELogger],
|
||||||
exports: [loggerProvider],
|
exports: [AFFiNELogger],
|
||||||
})
|
})
|
||||||
export class LoggerModule {}
|
export class LoggerModule {}
|
||||||
|
|
||||||
export { AFFiNELogger } from './logger';
|
export { AFFiNELogger } from './service';
|
||||||
|
|||||||
@@ -1,30 +1,6 @@
|
|||||||
import { LoggingWinston } from '@google-cloud/logging-winston';
|
import { ConsoleLogger, Injectable, Scope } from '@nestjs/common';
|
||||||
import { ConsoleLogger, LoggerService, Provider, Scope } from '@nestjs/common';
|
|
||||||
import { createLogger, transports } from 'winston';
|
|
||||||
|
|
||||||
import { Config } from '../config';
|
@Injectable({
|
||||||
import { AFFiNELogger } from './logger';
|
|
||||||
|
|
||||||
export const loggerProvider: Provider<LoggerService> = {
|
|
||||||
provide: AFFiNELogger,
|
|
||||||
useFactory: (config: Config) => {
|
|
||||||
if (config.NODE_ENV !== 'production') {
|
|
||||||
return new ConsoleLogger();
|
|
||||||
}
|
|
||||||
const loggingWinston = new LoggingWinston();
|
|
||||||
// Create a Winston logger that streams to Cloud Logging
|
|
||||||
const instance = createLogger({
|
|
||||||
level: config.affine.stable ? 'log' : 'verbose',
|
|
||||||
transports: [
|
|
||||||
new transports.Console(),
|
|
||||||
// Add Cloud Logging
|
|
||||||
loggingWinston,
|
|
||||||
],
|
|
||||||
});
|
|
||||||
return new AFFiNELogger(instance);
|
|
||||||
},
|
|
||||||
inject: [Config],
|
|
||||||
// use transient to make sure the logger is created for each di context
|
|
||||||
// to make the `setContext` method works as expected
|
|
||||||
scope: Scope.TRANSIENT,
|
scope: Scope.TRANSIENT,
|
||||||
};
|
})
|
||||||
|
export class AFFiNELogger extends ConsoleLogger {}
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import { FactoryProvider, Logger } from '@nestjs/common';
|
import { FactoryProvider } from '@nestjs/common';
|
||||||
import { createTransport, Transporter } from 'nodemailer';
|
import { createTransport, Transporter } from 'nodemailer';
|
||||||
import SMTPTransport from 'nodemailer/lib/smtp-transport';
|
import SMTPTransport from 'nodemailer/lib/smtp-transport';
|
||||||
|
|
||||||
import { Config } from '../config';
|
import { Config } from '../config';
|
||||||
|
import { AFFiNELogger } from '../logger';
|
||||||
|
|
||||||
export const MAILER_SERVICE = Symbol('MAILER_SERVICE');
|
export const MAILER_SERVICE = Symbol('MAILER_SERVICE');
|
||||||
|
|
||||||
@@ -14,9 +15,9 @@ export const MAILER: FactoryProvider<
|
|||||||
Transporter<SMTPTransport.SentMessageInfo> | undefined
|
Transporter<SMTPTransport.SentMessageInfo> | undefined
|
||||||
> = {
|
> = {
|
||||||
provide: MAILER_SERVICE,
|
provide: MAILER_SERVICE,
|
||||||
useFactory: (config: Config) => {
|
useFactory: (config: Config, logger: AFFiNELogger) => {
|
||||||
if (config.mailer) {
|
if (config.mailer) {
|
||||||
const logger = new Logger('Mailer');
|
logger.setContext('Mailer');
|
||||||
const auth = config.mailer.auth;
|
const auth = config.mailer.auth;
|
||||||
if (auth && auth.user && !('pass' in auth)) {
|
if (auth && auth.user && !('pass' in auth)) {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
@@ -29,5 +30,5 @@ export const MAILER: FactoryProvider<
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
inject: [Config],
|
inject: [Config, AFFiNELogger],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ import './config';
|
|||||||
import { Global } from '@nestjs/common';
|
import { Global } from '@nestjs/common';
|
||||||
|
|
||||||
import { Plugin } from '../registry';
|
import { Plugin } from '../registry';
|
||||||
|
import { GCloudLogging } from './logging';
|
||||||
import { GCloudMetrics } from './metrics';
|
import { GCloudMetrics } from './metrics';
|
||||||
|
|
||||||
@Global()
|
@Global()
|
||||||
@Plugin({
|
@Plugin({
|
||||||
name: 'gcloud',
|
name: 'gcloud',
|
||||||
imports: [GCloudMetrics],
|
imports: [GCloudMetrics, GCloudLogging],
|
||||||
})
|
})
|
||||||
export class GCloudModule {}
|
export class GCloudModule {}
|
||||||
|
|||||||
13
packages/backend/server/src/plugins/gcloud/logging/index.ts
Normal file
13
packages/backend/server/src/plugins/gcloud/logging/index.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import { Global } from '@nestjs/common';
|
||||||
|
|
||||||
|
import { OptionalModule } from '../../../base';
|
||||||
|
import { loggerProvider } from './service';
|
||||||
|
|
||||||
|
@Global()
|
||||||
|
@OptionalModule({
|
||||||
|
if: config => config.metrics.enabled,
|
||||||
|
overrides: [loggerProvider],
|
||||||
|
})
|
||||||
|
export class GCloudLogging {}
|
||||||
|
|
||||||
|
export { AFFiNELogger } from './logger';
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
import { LoggingWinston } from '@google-cloud/logging-winston';
|
||||||
|
import { LoggerService, Provider, Scope } from '@nestjs/common';
|
||||||
|
import { createLogger, transports } from 'winston';
|
||||||
|
|
||||||
|
import { AFFiNELogger as LoggerProvide } from '../../../base/logger';
|
||||||
|
import { AFFiNELogger } from './logger';
|
||||||
|
|
||||||
|
export const loggerProvider: Provider<LoggerService> = {
|
||||||
|
provide: LoggerProvide,
|
||||||
|
useFactory: () => {
|
||||||
|
const loggingWinston = new LoggingWinston();
|
||||||
|
// Create a Winston logger that streams to Cloud Logging
|
||||||
|
const instance = createLogger({
|
||||||
|
level: 'log',
|
||||||
|
transports: [
|
||||||
|
new transports.Console(),
|
||||||
|
// Add Cloud Logging
|
||||||
|
loggingWinston,
|
||||||
|
],
|
||||||
|
});
|
||||||
|
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,
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user