linux

如何设置Linux JS日志轮转策略

小樊
49
2025-11-09 16:14:22
栏目: 编程语言

在Linux系统中,日志轮转是一种管理日志文件大小和数量的重要机制,可以防止日志文件过大导致磁盘空间不足。对于JavaScript应用程序,通常会使用一些日志库(如winstonmorgan等)来记录日志。以下是如何为这些日志库设置轮转策略的示例。

使用winston进行日志轮转

winston是一个流行的Node.js日志库,可以通过winston-daily-rotate-file模块来实现日志轮转。

  1. 安装依赖

    npm install winston winston-daily-rotate-file
    
  2. 配置winston: 创建一个日志配置文件,例如logger.js

    const winston = require('winston');
    const { createLogger, format, transports } = winston;
    const DailyRotateFile = require('winston-daily-rotate-file');
    
    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}: ${message}`;
        })
      ),
      transports: [
        new DailyRotateFile({
          filename: 'application-%DATE%.log',
          datePattern: 'YYYY-MM-DD-HH',
          zippedArchive: true,
          maxSize: '20m',
          maxFiles: '14d'
        })
      ]
    });
    
    module.exports = logger;
    

    在这个配置中:

    • filename:日志文件的基本名称。
    • datePattern:日期模式,用于生成每天的日志文件。
    • zippedArchive:是否压缩旧的日志文件。
    • maxSize:单个日志文件的最大大小。
    • maxFiles:保留的日志文件最大数量。

使用morgan进行日志轮转

morgan是一个HTTP请求日志中间件,通常与winston结合使用。

  1. 安装依赖

    npm install morgan winston winston-daily-rotate-file
    
  2. 配置morganwinston: 创建一个日志配置文件,例如logger.js

    const winston = require('winston');
    const { createLogger, format, transports } = winston;
    const DailyRotateFile = require('winston-daily-rotate-file');
    const morgan = require('morgan');
    
    const accessLogStream = new DailyRotateFile({
      filename: 'access.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}: ${message}`;
        })
      ),
      transports: [
        accessLogStream,
        new transports.Console()
      ]
    });
    
    const morganFormat = ':method :url :status :res[content-length] - :response-time ms - :user-agent';
    app.use(morgan(morganFormat, { stream: accessLogStream }));
    
    module.exports = logger;
    

    在这个配置中,morgan的日志会被写入到access.log文件中,并且会进行轮转。

总结

通过上述步骤,你可以为JavaScript应用程序设置日志轮转策略,确保日志文件不会过大,并且可以方便地管理和查看历史日志。根据你的具体需求,可以调整maxSizemaxFiles等参数。

0
看了该问题的人还看了