JavaScript 应用中的日志记录:最佳实践——第 3 部分

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

JavaScript 应用程序日志记录:最佳实践 — 第 3 部分



在本系列关于 JavaScript 日志记录的最后一篇文章中,我们将探讨有助于在 Node.js 应用程序中构建可靠监控系统的高级技术和工具。这些内容既适合 学习,也适合实际应用——从 JavaScript 初学者 到经验丰富的开发者。我们将讨论结构化日志、日志轮转、与外部服务的集成以及安全性。



1. Node.js 中的结构化日志



常规的 console.log() 不适合生产环境。应使用生成 JSON 格式日志的库,这有助于简化和分析日志。



使用 Winston 库的示例

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' }) ]});

// 使用方式logger.info('用户已注册', { userId: 123, email: 'user@example.com' });logger.error('数据库错误', { error: err.message, stack: err.stack });


这种方法使你能够按级别、时间和上下文轻松过滤日志。这在 编程 微服务时尤为重要。



2. 日志轮转与大小管理



日志可能会迅速填满磁盘。请使用轮转机制——自动归档旧文件。在 Node.js 中,通过 winston-daily-rotate-file 模块可以轻松实现。



轮转配置示例

const DailyRotateFile = require('winston-daily-rotate-file');

const transport = new DailyRotateFile({ filename: 'logs/application-%DATE%.log', datePattern: 'YYYY-MM-DD', maxSize: '20m', maxFiles: '14d'});

const logger = winston.createLogger({ transports: [transport]});


这将确保日志每天不超过 20 MB,并保留 14 天。



3. 与外部监控服务的集成



为了实现集中式日志收集,请使用 Logstash、Datadog 或 Sentry 等服务。在 JavaScript 中,可以通过 Winston 传输通道实现。



将日志发送到 Logstash 的示例

const { LogstashTransport } = require('winston-logstash-transport');

const logger = winston.createLogger({ transports: [ new LogstashTransport({ host: 'logstash.example.com', port: 5000 }) ]});


这样,你就可以实时分析日志、构建仪表盘并设置警报。



4. 日志安全



切勿记录敏感数据:密码、令牌、信用卡号。请使用过滤器或掩码函数。



数据掩码示例

function maskSensitive(obj) {  const masked = { ...obj };  if (masked.password) masked.password = '***';  if (masked.token) masked.token = '***';  return masked;}

logger.info('用户请求', maskSensitive(req.body));


这将保护你免受数据泄露,并帮助你遵守 GDPR 法规。



总结



在本部分中,我们涵盖了在 Node.js 上的 JavaScript 应用程序中的关键日志实践:结构化日志、轮转、与外部系统的集成以及安全性。这些技术将帮助你创建可靠且易于维护的系统。对于 学习,我们建议从 Winston 开始,然后逐步引入更复杂的工具。JavaScript 初学者 可能会觉得有些挑战,但实践会让你成为专业人士。祝 编程 顺利!

博客

书籍推荐