在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
工具定期輪轉,避免日志文件過大。