东丽网口版透析机 socket- server 通讯
chenyc
2025-12-09 7cfe3332f016d7def7ca8ad25ed8bbdc33d23ed2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const { createLogger, format, transports } = require('winston');
require('winston-daily-rotate-file');
 
const { combine, timestamp, label, printf } = format;
function formatDate(date) {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  const hours = String(date.getHours()).padStart(2, '0');
  const minutes = String(date.getMinutes()).padStart(2, '0');
  const seconds = String(date.getSeconds()).padStart(2, '0');
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
// 自定义日志格式
const myFormat = printf(({ level, message, label, timestamp }) => {
  const formattedTimestamp = formatDate(new Date(timestamp));
  return `${formattedTimestamp} [${label}] ${level}: ${message}`;
});
 
// 创建日志记录器
const logger = createLogger({
  level: 'info', // 设置最低日志级别
  format: combine(
    label({ label: 'dataSocketService' }), // 可选:给日志添加标签
    timestamp(), // 添加时间戳
    myFormat // 使用自定义格式
  ),
  transports: [
    new transports.Console(), // 输出到控制台(可选)
    new transports.DailyRotateFile({
      filename: 'logs/application-%DATE%.log', // 日志文件名模式
      datePattern: 'YYYY-MM-DD', // 日期格式
      zippedArchive: true, // 归档旧日志文件时压缩
      maxSize: '20m', // 文件最大大小
      maxFiles: '14d', // 保留最近14天的日志文件
    }),
  ],
});
 
module.exports = logger;