溫馨提示×

如何在Linux上配置Node.js的日志輸出

小樊
32
2025-06-11 06:02:18
欄目: 編程語言

在Linux上配置Node.js應用程序的日志輸出可以通過多種方式實現,以下是一些常見的方法:

1. 使用內置的console模塊

Node.js內置的console模塊是最簡單的日志輸出方式。你可以直接在代碼中使用console.log、console.error等方法來輸出日志。

const fs = require('fs');
const path = require('path');

const logFile = path.join(__dirname, 'app.log');

const logger = {
  log: (...args) => {
    const timestamp = new Date().toISOString();
    const message = args.join(' ');
    const logEntry = `${timestamp} - ${message}\n`;
    fs.appendFile(logFile, logEntry, (err) => {
      if (err) console.error('Failed to write to log file:', err);
    });
  },
  error: (...args) => {
    const timestamp = new Date().toISOString();
    const message = args.join(' ');
    const logEntry = `[ERROR] ${timestamp} - ${message}\n`;
    fs.appendFile(logFile, logEntry, (err) => {
      if (err) console.error('Failed to write to log file:', err);
    });
  }
};

logger.log('This is a log message');
logger.error('This is an error message');

2. 使用第三方日志庫

有許多第三方日志庫可以幫助你更好地管理和配置日志輸出,例如winstonpino。

使用winston

winston是一個功能強大的日志庫,支持多種傳輸方式(如文件、控制臺、HTTP等)。

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'app.log' }),
    new winston.transports.Console()
  ]
});

logger.info('This is an info message');
logger.error('This is an error message');

使用pino

pino是一個高性能的日志庫,適合需要高吞吐量的應用。

const pino = require('pino');
const logger = pino({
  level: 'info',
  transport: {
    target: 'pino-pretty',
    options: { colorize: true }
  }
});

logger.info('This is an info message');
logger.error('This is an error message');

3. 配置日志輪轉

為了防止日志文件過大,可以使用日志輪轉工具,例如logrotate。

首先,確保你的系統上安裝了logrotate

sudo apt-get install logrotate

然后,創建一個logrotate配置文件,例如/etc/logrotate.d/nodejs

/path/to/your/nodejs/app.log {
  daily
  missingok
  rotate 7
  compress
  notifempty
  create 0640 root adm
}

這個配置文件表示每天輪轉一次日志文件,保留最近7天的日志,并對舊日志進行壓縮。

4. 使用環境變量配置日志級別

你可以通過環境變量來動態配置日志級別,這樣可以在不同的環境中使用不同的日志級別。

const winston = require('winston');

const logLevel = process.env.LOG_LEVEL || 'info';
const logger = winston.createLogger({
  level: logLevel,
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'app.log' }),
    new winston.transports.Console()
  ]
});

logger.info('This is an info message');
logger.error('This is an error message');

通過設置環境變量LOG_LEVEL,你可以控制日志的輸出級別:

LOG_LEVEL=debug node app.js

通過這些方法,你可以在Linux上靈活地配置Node.js應用程序的日志輸出。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女