diff --git a/src/utils/config.ts b/src/utils/config.ts index d5a7723..8eff632 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -33,7 +33,6 @@ export const getConfig = () => { // } // 融合注入参数 config = Object.assign(config, process.env); - console.log(config) configAll = { ...config, isExist: true } return config; }; diff --git a/src/utils/logger.ts b/src/utils/logger.ts new file mode 100644 index 0000000..98a9bd5 --- /dev/null +++ b/src/utils/logger.ts @@ -0,0 +1,79 @@ +import { Logger, createLogger, format, transports } from 'winston'; +import 'winston-daily-rotate-file'; + +const customFormat = format.combine( + format.timestamp({ format: 'MMM-DD-YYYY HH:mm:ss' }), + format.align(), + format.printf((i) => `${i.level}: ${[i.timestamp]}: ${i.message}`), +); + +const defaultOptions: any = { + format: customFormat, + datePattern: 'YYYY-MM-DD', + zippedArchive: true, + maxSize: '5m', + maxFiles: '14d', +}; + +export default class AppLogger { + private context?: string; + private logger: Logger; + + public setContext(context: string): void { + this.context = context; + } + constructor() { + this.logger = createLogger({ + format: customFormat, + transports: [ + // new transports.Console(), + new transports.DailyRotateFile({ + filename: 'logs/info-%DATE%.log', + level: 'info', + ...defaultOptions, + }), + new transports.DailyRotateFile({ + filename: 'logs/error-%DATE%.log', + level: 'error', + ...defaultOptions, + }), + ], + }); + } + + error(ctx: any, message: string, meta?: Record): Logger { + return this.logger.error({ + message: `${this.context}:${message}`, + contextName: this.context, + ctx, + ...meta, + }); + } + + warn(ctx: any, message: string, meta?: Record): Logger { + return this.logger.warn({ + message: `${this.context}:${message}`, + contextName: this.context, + ctx, + ...meta, + }); + } + + debug(ctx: any, message: string, meta?: Record): Logger { + return this.logger.debug({ + message: `${this.context}:${message}`, + contextName: this.context, + ctx, + ...meta, + }); + } + + info(ctx: any, message: string, meta?: Record): Logger { + return this.logger.info({ + message: `${this.context}:${message}`, + contextName: this.context, + ctx, + ...meta, + }); + } +}