- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
几年前我和 winston 一起工作。当我们在 localhost 上进行开发时,我们的 winston 被配置为输出格式良好、易于阅读的 JSON。
2.x winston
npm install <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e3948a8d90978c8da3d1cdd1cdd3" rel="noreferrer noopener nofollow">[email protected]</a>
const winston = require('winston');
const logger = new winston.Logger({
transports: [new (winston.transports.Console)({ json: true })],
});
logger.info('please', { iam: 'good' });
try {
throw new Error('ooh noo');
} catch (err) {
logger.error('Not good error', err);
}
有这个输出
{
"iam": "good",
"level": "info",
"message": "please"
}
{
"message": "Not good error",
"stack": "Error: ooh noo\n at Object.<anonymous> (C:\\Users\\libor\\WebstormProjects\\untitled\\usewinston.js:30:11)\n at Module._compile (internal/modules/cjs/loader.js:1063:30)\n at Object.Module._extensions..js (internal/
modules/cjs/loader.js:1092:10)\n at Module.load (internal/modules/cjs/loader.js:928:32)\n at Function.Module._load (internal/modules/cjs/loader.js:769:14)\n at Function.executeUserEntryPoint [as runMain] (internal/modules/run_
main.js:72:12)\n at internal/main/run_main_module.js:17:47",
"level": "error"
}
3.x winston
npm install winston
(撰写本文时最新版本还是3.3.3)
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
});
logger.add(new winston.transports.Console({
format: winston.format.json(),
}));
logger.info('please', { iam: 'good' });
try {
throw new Error('ooh noo');
} catch (err) {
logger.error('Not good error', err);
}
有这个输出
{"iam":"good","level":"info","message":"please"}
{"level":"error","message":"Not good error ooh noo","stack":"Error: ooh noo\n at Object.<anonymous> (C:\\Users\\libor\\WebstormProjects\\untitled\\usewinston.js:21:11)\n at Module._compile (internal/modules/cjs/loader.js:1063:30)
\n at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)\n at Module.load (internal/modules/cjs/loader.js:928:32)\n at Function.Module._load (internal/modules/cjs/loader.js:769:14)\n at Function.executeU
serEntryPoint [as runMain] (internal/modules/run_main.js:72:12)\n at internal/main/run_main_module.js:17:47"}
问题
是否有一些 native /简单的方法可以像我在最新(3.3.3)版本中的 2.x 版本中获得相同的输出?如果没有,您知道实现这一目标的最佳方法吗?
奖励问题
Webstorm 无法检测(在上述两个示例中)堆栈跟踪中的文件和行,因此它不可单击。当我只是“console.error”时,堆栈跟踪如下所示:
我可以直接单击该文件以导航到导致错误的行中的该文件。你知道如何在Winston 3.x中实现它吗?
最佳答案
我用自定义格式化程序解决了这个问题,如下
const winston = require('winston');
const _ = require('lodash');
const logger = winston.createLogger({
level: 'info',
});
const logStackAndOmitIt = winston.format((info, opts) => {
if (info.stack){
console.error(info.stack);
return _.omit(info, 'stack');
}
return info;
});
logger.add(new winston.transports.Console({
format: winston.format.combine(
logStackAndOmitIt(),
winston.format.prettyPrint(),
),
})
);
const arr = Array(50).fill(20)
logger.info('pleases', { iam: 'abc', arr });
try {
throw new Error('ooh noo');
} catch (err) {
logger.error('Not good error', err);
}
哪个有这个输出
{
iam: 'abc',
arr: [
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20
],
level: 'info',
message: 'pleases'
}
Error: ooh noo
at Object.<anonymous> (C:\Users\libor\WebstormProjects\untitled\usewinston.js:71:11)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
{ level: 'error', message: 'Not good error ooh noo' }
在 Webstorm 中包含可点击的链接
关于javascript - Winston 日志记录 - Winston 3.x 中漂亮的 JSON 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65277652/
在通过REST Request Body方法发出搜索请求时,例如 GET /bank/_search { "query": { "match_all": {} }, "sort": [
有没有办法检测用户是否停止滑动?也许 bij 鼠标输入检查之类的。我尝试在 onSliderChange 事件中使用鼠标 isButton0Release 和 hasFocus 来检查用户是否停止滑动
(来源:google.com) 最近,我发现我的应用程序中显示的汉字相当难看。 我想我应该让它们“消除锯齿”。但是,我如何在 Java 中做到这一点? 仅供引用,我没有明确选择要在 GUI 应用程序中
我正在创建一个网站,根据某些条件(即是否登录、是否填写表格等),不同页面的外观可能会有很大差异。这使得需要在不同的时间输出不同的html block 。 但是,这样做会使我的 php 代码看起来很糟糕
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
如果我有一个类包含例如几个将用向量填充的槽,那么问题通常会出现。如果我想让这个类的对象或多或少透明,我会为它实现 print-object。在这里我遇到了问题: 如果我在一行中打印所有内容,REPL
我有一个允许上传到我网站的文件扩展名列表。 我用 jQuery Validation plugin 检查它们. 如果他们选择了不受支持的扩展程序,我会显示一条错误消息。 看起来像 var msg =
在一个本身嵌套在一个或多个父数组/结构/union 中的数组/结构/union 中读取多个数字/字符串的最佳方法是什么? 没有临时变量的第一个例子: printf("%d %d\n", a[9][3]
我是 AngularJS 的新手。我目前在为我的观点编写漂亮的 url 时遇到问题。我已经设置了 $locationProvider.html5Mode(true);删除 #从地址栏中显示的网址。但是
我有一个带有 ElasticSearch 的自动完成 jquery 功能。输入第一个字母时出现以下错误。 跨源请求被阻止:同源策略不允许读取 http://localhost:9200/test12/
我是一名优秀的程序员,十分优秀!