发布于2026-07-03 阅读(0)
扫一扫,手机访问
在Debian上配置Node.js应用的日志级别,其实是个挺常见的需求。很多开发者一开始觉得“不就是调个日志等级嘛”,但真要弄得规范、可维护,还是得花点心思。下面咱们就一步步拆解,从选库到轮转,一次讲清楚。

第一步:选一个趁手的日志库
Node.js生态里日志库不少,比如winston、pino、morgan。如果你追求功能全面、社区活跃,winston是个稳妥的选择。这里我们就以它为例。
第二步:安装
用npm或者yarn装一下就行,非常简单:
npm install winston
或者
yarn add winston
第三步:配置日志库
在应用里创建一个logger.js文件,写一个基础配置。比如你想把错误日志单独写到一个文件,所有日志写到另一个文件,同时开发环境还想在控制台输出——下面的配置就能满足:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info', // 默认日志级别
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' }),
],
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple(),
}));
}
module.exports = logger;
注意这里的level字段,它决定了哪些级别的日志会被记录。比如设为info,那么info及以上(warn、error)都会输出;设为error则只输出error。
第四步:用环境变量控制日志级别
真正部署到Debian服务器上时,你可能希望生产环境只记录error,而开发环境记录debug。那就可以通过环境变量来动态调整。启动应用时这样写:
NODE_ENV=production LOG_LEVEL=error node app.js
然后在代码里读取这个变量,覆盖掉默认的level:
const logger = require('./logger');
const logLevel = process.env.LOG_LEVEL || 'info';
logger.level = logLevel;
这样一来,你只需要改启动命令里的环境变量,就能切换日志级别,不需要改代码。
第五步:日志轮转——别让文件无限膨胀
生产环境跑久了,日志文件动辄几个GB,既占磁盘又拖慢查询。这时候就需要日志轮转。推荐用winston-daily-rotate-file这个库:
npm install winston-daily-rotate-file
配置示例:
const { createLogger, format, transports } = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const logger = createLogger({
level: 'info',
format: format.json(),
transports: [
new DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d',
}),
],
});
module.exports = logger;
这里的关键参数:datePattern决定了按什么频率切分文件(比如每小时一个),maxSize限制单个文件最大20MB,maxFiles保留最近14天的日志,更早的自动删除。再配合zippedArchive: true,归档的日志会被压缩,节省不少空间。
按照以上步骤,你在Debian上就能把Node.js日志管理得井井有条。从选库到动态级别控制,再到自动轮转,一套下来,部署和运维都轻松很多。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8