温馨提示×

Ubuntu中Node.js日志文件位置在哪

小樊
38
2025-10-11 12:42:13
栏目: 编程语言

Ubuntu中Node.js日志文件的常见位置及查找方法

1. 无特殊配置:默认输出到控制台

若未在代码或启动命令中指定日志文件路径,Node.js应用默认会将日志(如console.log()console.error()的输出)直接打印到终端控制台,不会生成本地日志文件。此时需通过重定向将日志保存到文件(见下文“自定义日志路径”部分)。

2. 使用PM2进程管理器:默认路径为~/.pm2/logs/

若通过PM2管理Node.js应用(如pm2 start app.js),日志会自动存储在用户主目录下的.pm2/logs/目录中。文件名格式为:

  • <应用名称>-out.log:标准输出日志(包含console.log等内容);
  • <应用名称>-err.log:标准错误日志(包含console.error等内容)。
    例如,应用名为my-node-app时,日志路径为~/.pm2/logs/my-node-app-out.log~/.pm2/logs/my-node-app-err.log

3. 自定义代码配置:取决于代码中的路径设置

若在代码中通过fs模块或第三方日志库(如winstonlog4js)配置了日志路径,日志会存储在指定的目录中。常见示例:

  • 使用fs模块:
    const fs = require('fs');
    const logFilePath = './logs/app.log'; // 相对路径(项目根目录下的logs文件夹)
    const logStream = fs.createWriteStream(logFilePath, { flags: 'a' });
    global.console = new console.Console(logStream, logStream);
    console.log('This log is written to ./logs/app.log');
    
    此时日志会存储在项目根目录的logs/app.log文件中。
  • 使用winston库:
    const winston = require('winston');
    const logger = winston.createLogger({
      transports: [
        new winston.transports.File({ filename: '/var/log/my-node-app/app.log' }) // 绝对路径
      ]
    });
    logger.info('This log is written to /var/log/my-node-app/app.log');
    
    日志会存储在/var/log/my-node-app/app.log中。

4. 系统服务日志:通过journalctl查看

若将Node.js应用作为系统服务(如使用systemd创建.service文件)运行,日志会集成到Ubuntu系统日志中,可通过journalctl命令查看。例如:

  • 查看指定服务的日志:
    journalctl -u my-nodejs-app -f  # -f表示实时跟踪日志
    
    其中my-nodejs-app是服务的名称(需与.service文件中的[Service]部分Description一致)。

5. 自定义命令行重定向:指定输出文件

启动应用时,可通过命令行将标准输出(stdout)和标准错误(stderr)重定向到指定文件。例如:

node app.js > ./logs/app.log 2>&1 &  
  • >:将标准输出重定向到./logs/app.log
  • 2>&1:将标准错误合并到标准输出;
  • &:让应用在后台运行。
    此时日志会存储在项目根目录的logs/app.log文件中。

0