商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何配置Debian上的Node.js日志级别

如何配置Debian上的Node.js日志级别

  发布于2026-07-03 阅读(0)

扫一扫,手机访问

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

如何配置Debian上的Node.js日志级别

第一步:选一个趁手的日志库
Node.js生态里日志库不少,比如winstonpinomorgan。如果你追求功能全面、社区活跃,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及以上(warnerror)都会输出;设为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日志管理得井井有条。从选库到动态级别控制,再到自动轮转,一套下来,部署和运维都轻松很多。

本文转载于:https://www.yisu.com/ask/25905653.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注