在Debian上跑Node.js应用,日志配置是绕不开的一环。具体怎么做,其实取决于你选的是哪个日志库。下面聊三个最常见的:Winston、Bunyan和Morgan,分别看看它们怎么配。

Node.js在Debian中的日志如何配置

Winston

Winston 最大的特点就是灵活——可以同时塞多个传输通道和自定义格式。配置起来也很直观:

const { createLogger, format, transports } = require('winston');
const logger = createLogger({
  level: 'info',
  format: format.combine(
    format.timestamp(),
    format.printf(({ timestamp, level, message }) => {
      return `${timestamp} ${level.toUpperCase()}: ${message}`;
    })
  ),
  transports: [
    new transports.File({ filename: 'error.log', level: 'error' }),
    new transports.File({ filename: 'combined.log' }),
  ],
});
module.exports = logger;
const logger = require('./logger');
logger.info('Hello, world!');
logger.error('An error occurred');

Bunyan

Bunyan 走的是“极简+结构化”路线,输出的是 JSON 格式的日志,方便后续分析和管道处理。配置步骤一样简单:

const bunyan = require('bunyan');
const logger = bunyan.createLogger({
  name: 'my-app',
  streams: [
    { level: 'info', stream: process.stdout },
    { level: 'error', path: 'error.log' },
    { level: 'info', path: 'combined.log' },
  ],
});
module.exports = logger;
const logger = require('./logger');
logger.info('Hello, world!');
logger.error('An error occurred');

Morgan

Morgan 是专门给 Express 用的 HTTP 请求日志中间件,开箱即用,但也能定制。配置流程:

const express = require('express');
const morgan = require('morgan');
const app = express();

// 自定义日志格式
morgan.token('customFormat', (req, res) => {
  return `${req.method} ${req.url} ${res.statusCode}`;
});
app.use(morgan('customFormat', {
  stream: { write: (message) => console.log(message.trim()) }
}));

app.get('/', (req, res) => {
  res.send('Hello, world!');
});
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

以上只是最基本的配置示例。实际生产环境中,你很可能还需要考虑日志轮转、远程传输(比如发送到日志中心),或者接入集中式日志管理系统。不过有了这三个库的基础配置,剩下的就都是按需拓展了。

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