在现代 web 应用开发中,日志记录是一项非常重要的工作。在 Node.js 应用的开发中,我们通常使用 console.log() 方法输出日志信息。但是,这种方式不足以满足我们在实际开发中的需求。因此,json-log.express 这个 npm 包应运而生。
本文将为大家介绍 json-log.express 的使用教程。
什么是 json-log.express?
json-log.express 是一个基于 Express.js 框架的 npm 包,可以将 Express.js 应用的日志信息以 JSON 格式输出到控制台或文件。不仅如此,在日志信息中还可以包含请求的详细信息,如请求地址、请求方法、请求参数、请求头等等,方便我们对日志信息进行分析和处理。
安装和使用
首先在项目目录中安装 json-log.express:
npm install json-log.express
然后在 Express.js 应用中引入包并使用:
const express = require('express'); const jsonlog = require('json-log.express'); const app = express(); app.use(jsonlog());
通过以上代码,我们就可以在控制台看到输出的 JSON 格式的日志信息了。
注意:默认情况下,json-log.express 只会输出 HTTP 请求的日志信息,而不会输出错误日志信息。若需要输出错误日志信息,可以通过下面的方式进行配置:
app.use(jsonlog({ logErrors: true }));
日志格式说明
以下是 json-log.express 输出的日志格式说明:
timestamp
:日志输出时间type
:日志类型(请求信息、错误信息)level
:日志级别("info"、"error")message
:日志信息req
:请求信息url
:请求地址method
:请求方法headers
:请求头信息params
:请求参数query
:查询字符串body
:请求体信息
stack
:错误信息的堆栈信息
示例代码
完整的示例代码如下:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ------- - ---------------------------- ----- --- - ---------- ----------------- ---------- ---- ---- ------------ ----- ---- -- - --------------- --------- --- ------------- ---- ----- -- - ----- --- - --- ---------- -------- ---------- - ---- ---------- --- ------------- ---- ---- ----- -- - --------------------- -- ----- ------------------- - -------- ------------ ------ ------------------ --- ------------- - --- - -- --- --- ---------------- -- -- - -------------------- --- --------- -- ---- -------- ---
在控制台中,我们会看到输出的 JSON 格式的日志信息:
{"timestamp":1610666595805,"type":"request","level":"info","message":"Request: GET /","req":{"url":"/","method":"GET","headers":{"host":"localhost:3000","connection":"keep-alive","cache-control":"max-age=0","upgrade-insecure-requests":"1","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.57","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","sec-fetch-site":"none","sec-fetch-mode":"navigate","sec-fetch-user":"?1","sec-fetch-dest":"document","accept-encoding":"gzip, deflate, br","accept-language":"zh-CN,zh;q=0.9,en;q=0.8"},"params":{},"query":{},"body":{}}} {"timestamp":1610666595903,"type":"error","level":"error","message":"Not Found","stack":"Error: Not Found\n at D:\\Document\\MyProject\\app.js:14:17\n at Layer.handle [as handle_request] (D:\\Document\\MyProject\\node_modules\\express\\lib\\router\\layer.js:95:5)\n at trim_prefix (D:\\Document\\MyProject\\node_modules\\express\\lib\\router\\index.js:317:13)\n at D:\\Document\\MyProject\\node_modules\\express\\lib\\router\\index.js:284:7\n at Function.process_params (D:\\Document\\MyProject\\node_modules\\express\\lib\\router\\index.js:335:12)\n at next (D:\\Document\\MyProject\\node_modules\\express\\lib\\router\\index.js:275:10)\n at D:\\Document\\MyProject\\app.js:20:5\n at Layer.handle [as handle_request] (D:\\Document\\MyProject\\node_modules\\express\\lib\\router\\layer.js:95:5)\n at next (D:\\Document\\MyProject\\node_modules\\express\\lib\\router\\route.js:137:13)\n at Route.dispatch (D:\\Document\\MyProject\\node_modules\\express\\lib\\router\\route.js:112:3)"}
总结
使用 json-log.express 这个 npm 包可以更好地管理我们的日志信息,避免因为日志信息混乱导致无法准确地分析问题。使用本文中介绍的方法,可以轻松地在 Express.js 应用中实现日志信息的记录和输出。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60057c4881e8991b448ebccd