在Ubuntu系统中,查看Node.js日志的方法主要取决于日志的存储方式(系统服务日志、自定义文件、第三方工具)。以下是具体步骤:
若Node.js应用以systemd服务运行(如通过node app.js --name my-nodejs-app启动并注册为服务),可使用journalctl命令查看关联日志:
journalctl -u your-nodejs-service-name -f
-u:指定服务名称(需替换为实际服务名,可通过systemctl list-units --type=service查询);-f:实时跟踪日志输出(类似tail -f)。若启动时将日志重定向到文件(如node app.js > logs/app.log 2>&1 &),或代码中通过fs模块、日志库(如Winston、Bunyan)配置了日志路径,可直接操作日志文件:
cat logs/app.log(输出全部内容);tail -f logs/app.log(持续显示文件末尾新增内容,按Ctrl+C退出);grep "error" logs/app.log(仅显示包含“error”的行,可用于快速定位问题)。对于复杂应用,建议使用专业日志工具集中管理日志(如Logstash、Fluentd、Graylog),这些工具可实现日志收集、过滤、存储、可视化(如通过Kibana展示)。需提前配置工具与Node.js应用的集成(如通过Winston的transports配置将日志发送至工具)。
若应用使用console.log、winston、bunyan等库记录日志,日志会输出到配置的目标(控制台、文件、远程服务器)。例如:
transports将日志写入文件和控制台:const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/combined.log' }),
new winston.transports.Console(), // 输出到控制台
],
});
logger.info('This is an info log.'); // 会输出到combined.log和控制台
logger.error('This is an error log.'); // 会输出到error.log和combined.log
日志文件默认存储在项目根目录的logs文件夹下(需提前创建)。package.json中的scripts、日志库配置文件)或系统服务定义(如/etc/systemd/system/your-service.service);/var/log/nodejs/)并通过logrotate工具定期轮转,避免日志文件过大。