@kevin_men/websocket
Version:
TDengine Connector for nodejs and browser using WebSocket.
41 lines (40 loc) • 1.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setLevel = void 0;
const winston_1 = __importDefault(require("winston"));
const winston_daily_rotate_file_1 = __importDefault(require("winston-daily-rotate-file"));
const moment_timezone_1 = __importDefault(require("moment-timezone"));
const customFormat = winston_1.default.format.printf(({ timestamp, level, message, ...meta }) => {
const formattedTime = (0, moment_timezone_1.default)(timestamp).tz('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss.SSS'); // 使用上海时区
return `${formattedTime} ${level}: ${message} ${Object.keys(meta).length ? JSON.stringify(meta, null, 2) : ''}`;
});
const transport = new winston_daily_rotate_file_1.default({
filename: './logs/app-%DATE%.log', // Here is the file name template
datePattern: 'YYYY-MM-DD', // date format
zippedArchive: true, // Whether to compress the archive file into gzip format
maxSize: '20m', // Single file size limit
maxFiles: '14d', // Keep log files for 14 days
handleExceptions: true, // Whether to handle exceptions
json: false, // Whether to output logs in JSON format
format: winston_1.default.format.combine(winston_1.default.format.timestamp(), customFormat),
level: 'info', // set log level
});
const logger = winston_1.default.createLogger({
transports: [transport],
exitOnError: false, // Do not exit the process when an error occurs
});
// 设置 BigInt 类型的序列化处理
transport.format = winston_1.default.format((info) => {
if (info && info.message && typeof info.message === 'object' && typeof info.message.toJSON === 'function') {
info.message = info.message.toJSON();
}
return info;
})();
function setLevel(level) {
transport.level = level;
}
exports.setLevel = setLevel;
exports.default = logger;