作为一名 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
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 应用程序的最佳实践的详细内容,更多请关注青狐资源网其它相关文章!
暂无评论内容