请求的日志如下所示:
Received a new product Widget-1
Started to store product
POST /products 200 52.240 ms - 2
Product stored其中第一行、第二行和第四行是我使用console.log创建的日志。第三件是摩根做的。
我的问题是,将产品存储在db中的(异步)函数相对比较慢,所以我有如下所示的日志
Received a new product Widget-1
Started to store product
POST /products 200 52.240 ms - 2
Received a new product Widget-2
Started to store product
POST /products 200 52.240 ms - 2
Product stored
Product stored如何标记每一行日志,以便轻松地对请求的日志进行分组?有点像
[11111] Received a new product Widget-1
[11111] Started to store product
[11111] POST /products 200 52.240 ms - 2
[aaaaa] Received a new product Widget-2
[aaaaa] Started to store product
[aaaaa] POST /products 200 52.240 ms - 2
[11111] Product stored
[aaaaa] Product stored标签可以任何格式,我只想过滤属于同一请求的行。
我在Express中尝试了这种方法,创建了一个中间件,该中间件将一个随机数分配给一个req.id,并在每个console.log中使用该数字,例如:
console.log(`[${req.id}] Started to store product`)但是我更喜欢在中间件或配置中定义标记,然后使用console.log("Started to store product")。
发布于 2017-06-08 01:39:38
将唯一的ID附加到req是正确的方向。
进一步推动它,我们可以附加一个log()函数到req,它将记录任何以req.id为前缀的内容。
这给了我们:
const myMiddleware = (req, res, next) => {
req.id = getUniqueId();
req.log = (...args) => console.log(`[${req.id}]`, ...args);
};..。以后再使用:
// later
req.log('Started to store product'); // Outputs `[123456] Started to store product`关于您希望同时标记Morgan日志这一事实,这将不可能在每次请求的基础上标记它,除非Morgan可以被提供一个自定义日志函数。
发布于 2019-08-14 17:30:35
我专门创建了一个库来启用这个名为涂鸦的程序库
当您使用涂鸦时, 中间件。在您的应用程序中的任何地方,您调用的画笔记录器都会根据父请求自动标记输出。
spanId包含,缩写为 1)当前提交哈希2)父ID 3进程ID 4)请求数量。这意味着您可以根据这个spanId分离请求(通过日志收集器中的一些正则表达式),同时还可以获得一些有用的基本信息。
const scribbles = require('scribbles');
const express = require('express');
scribbles.config({
format:'{time} [{spanId}] <{logLevel}> {fileName}:{lineNumber} {message}'
})
const app = express();
// start a trace for each incoming request.
app.use(scribbles.middleware.express);
app.get('/', function (req, res){
scribbles.log("incoming");
// 2022-06-27T16:24:06.473 [090e8e40000005] <log> index.js:17 incoming
// ... do some work
}) // END app.get '/'
app.listen(port, () => scribbles.status(`App is ready!`))scribbles可以在帮助日志事件方面做更多的操作。了解性能监视和跨微服务的分布式跟踪的查看文档中的一些示例。
https://stackoverflow.com/questions/44338077
复制相似问题