// const winston = require('winston'); import winston from 'winston'; import path from 'path'; import DailyRotateFile from 'winston-daily-rotate-file'; export class Logger { constructor(log_folder) { this.log_folder = log_folder; this.logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.timestamp(), winston.format.printf(info => `${info.timestamp} [${info.level.toUpperCase()}] [${info.service}] ${info.message}`) ), transports: [ new DailyRotateFile({ filename: path.resolve(this.log_folder, `LAITool-%DATE%.log`), datePattern: 'YYYY-MM-DD', zippedArchive: true, maxSize: '10m', maxFiles: '14d' }) ], }); if (process.env.NODE_ENV !== 'production') { this.logger.add(new winston.transports.Console({ format: winston.format.simple(), })); } } /** * 保存info级别的日志 * @param {*} service service 名称 * @param {*} message 消息 */ info(service, message) { this.logger.info(message, { service }); } /** * 保存error级别的日志 * @param {*} service service 名称 * @param {*} message 消息 */ error(service, message) { this.logger.error(message, { service }); } /** * 保存warn级别的日志 * @param {*} service service 名称 * @param {*} message 消息 */ warn(service, message) { this.logger.warn(message, { service }); } }