linux

Linux下JS日志格式怎么设置

小樊
44
2025-10-29 23:58:56
栏目: 编程语言

在Linux环境下,使用JavaScript(Node.js)时,可以通过多种方式设置日志格式。以下是几种常见的方法:

1. 使用 console.log 和自定义格式

最简单的方法是使用 console.log 并手动拼接字符串来定义日志格式。例如:

const timestamp = new Date().toISOString();
const logMessage = `[${timestamp}] [INFO] 这是一条日志信息`;
console.log(logMessage);

2. 使用第三方日志库

使用成熟的第三方日志库可以更灵活地管理日志格式、级别和输出。以下是一些流行的选择:

a. Winston

Winston 是一个功能强大的日志库,支持多种传输方式和格式化选项。

安装 Winston:

npm install winston

示例代码:

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp({
      format: 'YYYY-MM-DD HH:mm:ss'
    }),
    winston.format.printf(({ timestamp, level, message }) => {
      return `[${timestamp}] [${level.toUpperCase()}] ${message}`;
    })
  ),
  transports: [
    new winston.transports.Console(),
    // 可以添加更多传输方式,如文件、HTTP等
    // new winston.transports.File({ filename: 'error.log', level: 'error' })
    // new winston.transports.File({ filename: 'combined.log' })
  ]
});

logger.info('这是一条信息日志');
logger.error('这是一条错误日志');

b. Pino

Pino 是一个高性能的日志库,适合需要高吞吐量的应用。

安装 Pino:

npm install pino

示例代码:

const pino = require('pino');
const logger = pino({
  level: 'info',
  transport: {
    target: 'pino-pretty', // 可以使用 pino-pretty 在控制台美化输出
    options: {
      colorize: true
    }
  }
});

logger.info('这是一条信息日志');
logger.error('这是一条错误日志');

注意: 使用 pino-pretty 需要单独安装:

npm install pino-pretty

3. 使用环境变量配置日志格式

可以通过环境变量来动态设置日志格式,增强灵活性。例如,使用 Winston 结合环境变量:

const winston = require('winston');

const logFormat = process.env.LOG_FORMAT || 'combined';

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp({
      format: 'YYYY-MM-DD HH:mm:ss'
    }),
    logFormat === 'simple'
      ? winston.format.simple()
      : winston.format.printf(({ timestamp, level, message }) => {
          return `[${timestamp}] [${level.toUpperCase()}] ${message}`;
        })
  ),
  transports: [
    new winston.transports.Console()
  ]
});

logger.info('这是一条信息日志');
logger.error('这是一条错误日志');

然后,在运行脚本时设置环境变量:

LOG_FORMAT=simple node your_script.js

4. 日志轮转

对于需要长期保存日志的应用,建议使用日志轮转工具,如 winston-daily-rotate-file

安装依赖:

npm install winston winston-daily-rotate-file

示例代码:

const winston = require('winston');
const { createLogger, format, transports } = winston;
const DailyRotateFile = require('winston-daily-rotate-file');

const transport = new DailyRotateFile({
  filename: 'application-%DATE%.log',
  datePattern: 'YYYY-MM-DD-HH',
  zippedArchive: true,
  maxSize: '20m',
  maxFiles: '14d'
});

const logger = createLogger({
  level: 'info',
  format: format.combine(
    format.timestamp({
      format: 'YYYY-MM-DD HH:mm:ss'
    }),
    format.printf(({ timestamp, level, message }) => {
      return `[${timestamp}] [${level.toUpperCase()}] ${message}`;
    })
  ),
  transports: [
    transport
  ]
});

logger.info('这是一条信息日志');
logger.error('这是一条错误日志');

总结

根据项目需求选择合适的日志管理方案:

通过合理配置日志格式,可以更好地监控和调试应用,提升开发和运维效率。

0
看了该问题的人还看了