在 Ubuntu 上调整 JavaScript(Node.js)日志详细程度通常从两类入手:一是应用内日志库的日志级别,二是承载进程的 systemd 服务日志级别。下面给出可直接落地的做法与建议。
一、应用内日志级别设置
npm install winstonconst winston = require('winston');
const logger = winston.createLogger({
level: 'debug', // 调整此处:debug/info/warn/error
format: winston.format.combine(
winston.format.timestamp(),
winston.format.printf(({ timestamp, level, message }) => {
return `${timestamp} ${level.toUpperCase()}: ${message}`;
})
),
transports: [new winston.transports.Console()]
});
logger.debug('调试信息');
new winston.transports.Console({ level: 'debug' }),
new winston.transports.File({ filename: 'error.log', level: 'error' })
npm install pinoconst pino = require('pino')();
pino.level = 'debug'; // 调整此处
pino.info('信息');
pino.debug('调试');
npm install morganconst express = require('express');
const morgan = require('morgan');
const app = express();
app.use(morgan('combined')); // 常用:combined / common / tiny / dev
// 也可按条件记录
app.use(morgan(':method :url :status :res[content-length] - :response-time ms', {
skip: (req,res) => res.statusCode < 400
}));
npm install bunyanconst bunyan = require('bunyan');
const logger = bunyan.createLogger({ name: 'my-app', level: 'debug' });
logger.debug('调试信息');
export WINSTON_LEVEL=debugexport PINO_LEVEL=debugnode your-app.js二、systemd 服务日志级别
[Unit]
Description=My Node.js App
[Service]
ExecStart=/usr/bin/node /path/to/your/script.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=my_service
LogLevel=info # 可改为 debug 等
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl restart my_servicesudo journalctl -u my_service -f(加 -f 实时跟踪)三、环境与性能建议
/path/to/your.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
}