记录 Nodejs 应用程序的最佳实践

作为一名 node.js 开发人员,在调试、监控和维护应用程序时,日志记录几乎就是一切。但您是否使用日志记录最佳实践?让我们探索一些可以将您的 node.js 应用程序提升到新水平的日志记录技术。

要了解更多信息,您可以查看完整的博客文章。

1. 温斯顿:伐木界的瑞士军刀

?工具:温斯顿

? 描述:node.js 的多功能日志库

? 主要特点: 多种传输选项(控制台、文件、数据库) 可定制的日志级别 支持各种格式的日志记录(json、纯文本)

1

2

3

4

5

6

7

8

9

10

javascriptcopyconst winston = require(winston);

const log项目网点我wcqh.cnger = 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 })

]

});

登录后复制

2. morgan:http请求记录器中间件

?工具:摩根

? 描述:简化 express.js 中的 http 请求日志记录

? 主要特点:预定义的日志格式 自项目网点我wcqh.cn定义令牌支持 与 express.js 轻松集成

1

2

3

4

5

javascriptcopyconst express = require(express);

const morgan = require(morgan);

const app = express();

app.use(morgan(combined));

登录后复制

3. bunyan:node.js 的 json 日志记录

?工具:bunyan

? 描述:node.js 应用程序的结构化 json 日志记录

? 主要特点: 默认 json 日志格式 支持儿童记录器 内置 cli 用于查看日志

1

2

3

4

5项目网点我wcqh.cn

javascriptcopyconst bunyan = require(bunyan);

const log = bunyan.createlogger({name: “myapp”});

log.info(“hi”);

log.warn({lang: fr}, “au revoir”);

登录后复制

4. pino:超快速 node.js 记录器

?工具:皮诺

? 描述:使用 json 输出进行低开销日志记录

? 主要特点: 极快的性能 自动日志轮转 支持子记录器

1

2

3

4

5

javascriptcopyconst pino = require(pino);

const logge项目网点我wcqh.cnr = pino();

logger.info(hello world);

logger.error(this is at error level);

登录后复制

5. 调试:微型调试实用程序

? 工具:调试

? 描述:node.js 的小型调试实用程序

? 主要特点: 轻巧易用 使用命名空间进行选择性调试 浏览器支持

1

2

3

javascriptcopyconst debug = require(debug)(http);

debug(booting %o, name);

登录后复制

6. log4js:灵活的 javascript 日志记录

?工具:log4js

? 描述:log4j 框项目网点我wcqh.cn架到 javascript 的转换

? 主要特点: 分层日志记录级别 多个输出附加器 可配置的布局

1

2

3

4

5

6

7

8

javascriptcopyconst log4js = require(“log4js”);

log4js.configure({

appenders: { cheese: { type: “file”, filename: “cheese.log” } },

categories: { default: { appenders: [“cheese”], level: “error” } }

});

const logger = log4js.getlogger项目网点我wcqh.cn(“cheese”);

logger.error(“cheese is too ripe!”);

登录后复制

7.elasticsearch、logstash 和 kibana(elk 堆栈)

?工具:elk stack

? 描述:日志管理和分析的强大组合

? 主要特点: 集中记录 实时日志分析 可视化和仪表板

1

2

3

4

5

6

7

8

9

10

11

12

javascriptcopyconst winston = require(winston);

const elasticsearch = require(winston-elasticsearch);

const estransportopt项目网点我wcqh.cns = {

level: info,

clientopts: { node: http://localhost:9200 }

};

const logger = winston.createlogger({

transports: [

new elasticsearch(estransportopts)

]

});

登录后复制

8.sentry:错误跟踪和性能监控

? 工具:哨兵

? 描述:实时错误跟踪和性能监控

? 主要特点: 自动错误捕获 发布跟踪 性能监控

1

2

3

4

5

6

7

8

9

javascriptcopyconst sentry = require(“@sentry/node”);

sen项目网点我wcqh.cntry.init({ dsn: “https://examplepublickey@o0.ingest.sentry.io/0” });

try {

somefunction();

} catch (e) {

sentry.captureexception(e);

}

登录后复制

9. 新遗迹:应用程序性能监控

? 工具:新遗物

? 描述:全面的应用程序性能监控

? 主要特点: 实时性能指标 错误分析 定制仪器

1

2

3

4

javascriptcopyconst newrelic = require(newrelic);

newrelic.settransactionname(mycusto项目网点我wcqh.cnmtransaction);

// your application code here

登录后复制

10. loggly:基于云的日志管理

?工具:loggly

? 描述:基于云的日志管理和分析服务

? 主要特点: 集中日志管理 实时日志搜索和分析 自定义仪表板和警报

1

2

3

4

5

6

7

8

9

javascriptcopyconst winston = require(winston);

const { loggly } = require(winston-loggly-bulk);

winston.add(new loggly({

token: “your-token”,

subdomai项目网点我wcqh.cnn: “your-subdomain”,

tags: [“winston-nodejs”],

json: true

}));

登录后复制

winston.log(info, “来自 node.js 的 hello world!”);

额外提示:结构化日志记录

无论您选择什么工具,实现结构化日志记录都可以极大地提高您的日志分析能力:

1

2

3

4

5

6

javascriptCopylogger.info({

event: user_login,

userId: user.id,

timestamp: new Date().toISOString(),

ipAddress: req.ip

});

登录后复制

通过使用这些附加工具和实践项目网点我wcqh.cn,您将拥有全面的日志记录策略,涵盖从基本调试到高级应用程序性能监控的所有内容。请记住,有效日志记录的关键是根据您的特定需求选择正确的工具,并在整个代码库中持续应用最佳实践。

如果您在调试 web 应用程序时需要帮助,请查看 https://alerty.ai 以了解有关简单前端监控的更多信息。

祝您日志记录愉快,祝您的 node.js 应用程序顺利运行! ??

以上就是记录 Nodejs 应用程序的最佳实践的详细内容,更多请关注青狐资源网其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞616 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容