- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用Winston进行后端日志记录,如果不使用JSON.stringify
就无法记录对象,这很烦人
logger.debug(`Register ${JSON.stringify(req.body)}`)
const logger: Logger = createLogger({
// change level if in dev environment versus production
level: env === 'production' ? 'info' : 'debug',
format: format.combine(
format.label({label: path.basename(process.mainModule.filename)}),
format.timestamp({format: 'YYYY-MM-DD HH:mm:ss'}),
format.prettyPrint()
),
transports: [
new transports.Console({
format: format.combine(format.colorize(), logFormat),
}),
new transports.File({
filename,
format: format.combine(format.json()),
}),
],
exitOnError: false,
})
最佳答案
您正在尝试将JSON对象直接插入字符串中,因此它将打印出[Object Object]
而不包含JSON.stringify
。
这不能通过配置Winston来解决,因为在生成字符串时会发生此问题(在logger.debug
函数实际读取它之前),因此console.log
调用将打印相同的内容。logger.*
函数的第一个参数是消息(字符串),然后您可以传递元数据对象(JSON)。
要在logFormat
函数中使用元数据,请更新Logger实例,如下所示:
const winston = require('winston')
const { format, transports } = winston
const path = require('path')
const logFormat = format.printf(info => `${info.timestamp} ${info.level} [${info.label}]: ${info.message}`)
const logger = winston.createLogger({
level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
format: format.combine(
format.label({ label: path.basename(process.mainModule.filename) }),
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
// Format the metadata object
format.metadata({ fillExcept: ['message', 'level', 'timestamp', 'label'] })
),
transports: [
new transports.Console({
format: format.combine(
format.colorize(),
logFormat
)
}),
new transports.File({
filename: 'logs/combined.log',
format: format.combine(
// Render in one line in your log file.
// If you use prettyPrint() here it will be really
// difficult to exploit your logs files afterwards.
format.json()
)
})
],
exitOnError: false
})
const req = {
body: {
name: 'Daniel Duuch',
email: 'daniel.duuch@greatmail.com',
password: 'myGreatPassword'
}
}
logger.debug(`Register ${req.body.name} with email ${req.body.email}`, { ...req.body, action: 'register' })
2019-05-11 17:05:45 debug [index.js]: Register Daniel Duuch with email daniel.duuch@greatmail.com
{
message: 'Register Daniel Duuch with email daniel.duuch@greatmail.com',
level: 'debug',
timestamp: '2019-05-11 17:05:45',
label: 'index.js',
metadata: {
name: 'Daniel Duuch',
email: 'daniel.duuch@greatmail.com',
password: 'myGreatPassword'
}
}
关于node.js - winston 记录对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56090851/
我正在使用 winston、expressWinston、winston-mongoDB 来管理我的 NodeJs 应用程序中的日志。 同时使用 winston-mongodb transport 和
当我的应用程序启动时,winston 会记录各种信息,例如 winston:create-logger Define prototype method for "error" winston:crea
我正在使用 winston logger 和 wnat 进行流式输入。但我不知道我应该传递给什么。我的记录器: const logger = createLogger({ ... }); Missin
winston.createLogger();显然不是构造函数。为什么会这样? 我看到有些人尝试回滚到winston@3.0.0,但这对我不起作用。我使用的是最新版本的 winston 。以下是 lo
几年前我和 winston 一起工作。当我们在 localhost 上进行开发时,我们的 winston 被配置为输出格式良好、易于阅读的 JSON。 2.x winston npm install
我正在尝试使用 express-winston 和 winston-mongodb 将请求/响应记录到 NodeJS 项目中的 MongoDB。这是我到目前为止工作的示例代码; const expre
我正在尝试在 Node js 中实现一个记录器,它将每天以自定义格式的日志创建一个新的日志文件 为此我使用了三个包 winston morgan winston-daily-rotate-file 所
将 winston 更新至 3.0.0运行我的nodejs应用程序时出现此错误出现以下错误 TypeError: colors[Colorizer.allColors[lookup]] is no
编辑:找到答案,并为 future 的读者发布完整的答案。 我已经掌握了winston logging的基础知识在 Node.js 中,并希望更多地自定义我的日志记录。这是我到目前为止所拥有的: va
我正在使用 winston 登录 Sails 应用程序。这是我的配置: var customLogger = new winston.Logger({ transports: [
所以我使用winston-daily-rotate-file。在 app.js 中我有: var logger = require('./logger'); 然后: logger.info("logg
现在我使用 Winston 来记录最大大小和每日轮换 我希望每个 API 端点都有一个文件,从而定义多个日志文件 我怎样才能实现这一目标? 这是我的 winston 助手类 import * as w
我想在 node 应用程序中使用 winston 记录器将错误记录到文件中。但是 winston 没有写入文件。 var logger = new (winston.Logger)({
我正在使用 创建完整的平均堆栈应用程序 NodeJs , Angular 6 , ExpressJs and MongoDB 我已经成功创建了一个服务器,并且它工作得很好,在我的应用程序中记录错误时,
我正在使用 Winston ^3.0.0-rc6,如下所示: var options = { file: { level: 'info', filename:
我尝试向 winston 添加自定义日志级别。这是记录器的代码: const write = new (winston.Logger)({ transports: [
这是我的 winston 记录器 - var winston = require('winston') var logger = new (winston.Logger)({ transports
我正在使用这样的东西: var winston = require('winston'), logger = new (winston.Logger)({ transports: [ ne
Flatiron 的日志记录库 Winston 非常有用,但我不知道如何为记录器分配名称。我期待与其他日志库类似的输出,例如: [] [] - 是否可以这样配置Winston? 谢谢。 最佳答案
我写了一个小模块,使用 winston 来记录东西。 我使用了 sudo npm install -g winston(它在 vm 上...所以我不太关心 sudo 等。 来自 npm 的日志: wi
我是一名优秀的程序员,十分优秀!