node.js - 如何为 winston@3 记录器制作自定义 json 格式化程序?
问题描述
我正在尝试为 winston v3 制作自定义 json 格式化程序。
这是一个带有演示的文件:
const { createLogger, format, transports } = require("winston")
const { combine, timestamp, prettyPrint } = format
const logger = createLogger({
format: combine(timestamp(), prettyPrint())
})
logger.add(new transports.Console())
logger.info("test message", { data: { a: 1, b: [1, 2, 3, 4], d: new Date() } })
try {
throw new Error("I'm an error!")
} catch (err) {
logger.error(err)
}
它打印:
{ data: { a: 1, b: [ 1, 2, 3, 4 ], d: 2018-07-21T08:59:27.958Z },
level: 'info',
message: 'test message',
timestamp: '2018-07-21T08:59:27.959Z',
[Symbol(level)]: 'info',
[Symbol(splat)]:
[ { data: { a: 1, b: [ 1, 2, 3, 4 ], d: 2018-07-21T08:59:27.958Z } } ] }
{ Error: I'm an error!
at Object.<anonymous> (/Users/max7z/projects/test/t32__test__winston__pretty-print_symbol/index.js:13:9)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:266:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)
level: 'error',
timestamp: '2018-07-21T08:59:27.962Z',
[Symbol(level)]: 'error' }
我想要几乎相同的输出,但没有一些字段:[Symbol(level)]、[Symbol(splat)]。
是否可以从prettyPrint
格式化程序中删除 [Symbol] 字段?
或者我怎样才能制作我自己的自定义 json 格式化程序,并带有像 prettyPrint 这样的错误堆栈跟踪?
解决方案
查看如何创建自定义格式。然后以 的源代码为prettyPrint
基础,根据您的需要创建修改后的版本。
Winstons 使用triple-beam
各种Symbol
s 的定义,因此您也可以使用该包来删除它们。
推荐阅读
- c# - 无法从程序集 officewriter.proces() 加载类型“System.Data.OleDb.OleDbType”
- simd - 当数据类型为 8 位时使用 aarch64 程序集将向量乘以标量的问题
- bash - Git别名配置需要多少轮转义?
- kubernetes - 为什么 GKE 私有集群的出站访问不明确?
- javascript - 提交表单操作
- windows - 双击系统菜单不再关闭 VS Code (Windows)
- python - 正则表达式:如何将 re.sub 与可变数量的元素一起使用?
- docker - 如何从 Windows Docker 容器中的主机网络读取文件
- javascript - Vuetify Combobox 不返回 id 而不是值
- java - Hibernate 实体抽象