日志系统设计

实现结构化日志系统

提示词

请为应用设计日志系统:

技术栈:[Winston/Pino/Loguru等]

要求:
1. 日志级别(debug/info/warn/error)
2. 结构化JSON格式
3. 请求ID追踪
4. 错误堆栈记录
5. 敏感信息脱敏
6. 日志轮转
7. 不同环境配置
8. 日志查询建议(ELK/Loki)

示例输出

const pino = require('pino');

const logger = pino({
  level: process.env.LOG_LEVEL || 'info',
  formatters: {
    level: (label) => ({ level: label }),
  },
  redact: {
    paths: ['password', 'token', 'email', '*.creditCard'],
    censor: '***'
  },
  timestamp: pino.stdTimeFunctions.isoTime,
});

// 请求日志中间件
app.use((req, res, next) => {
  req.id = crypto.randomUUID();
  req.log = logger.child({ requestId: req.id });
  req.log.info({ method: req.method, url: req.url }, '请求开始');
  
  const start = Date.now();
  res.on('finish', () => {
    req.log.info({
      statusCode: res.statusCode,
      duration: Date.now() - start
    }, '请求结束');
  });
  next();
});

// 使用
app.get('/api/users', async (req, res) => {
  req.log.debug('获取用户列表');
  try {
    const users = await User.findAll();
    res.json(users);
  } catch (err) {
    req.log.error({ err }, '获取用户失败');
    res.status(500).json({ error: '服务器错误' });
  }
});
0

评论 0

更多

登录后可点赞、收藏、评论和举报。

还没有评论,先发起一个具体问题。