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模块或第三方日志库(如winston、log4js)配置了日志路径,日志会存储在指定的目录中。常见示例:
- 使用
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文件中。
以上就是关于“Ubuntu中Node.js日志文件位置在哪”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm