日志系统设计
实现结构化日志系统
提示词
请为应用设计日志系统:
技术栈:[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
更多
登录后可点赞、收藏、评论和举报。
还没有评论,先发起一个具体问题。