Winston 不显示错误详细信息

2023-12-21

我在用winston对于日志记录来说,大多数情况下它运行良好,但是当出现异常时,它只是不打印任何详细信息。

这是我的配置代码winston:

// Create logger
const logger = winston.createLogger()

// Create timestamp format
const tsFormat = () => (new Date()).toLocaleTimeString()

// Attach transports based on app mode
if (process.env.APP_MODE === 'production') {
  // Log to file
  logger.add(new (winston.transports.DailyRotateFile)({
    filename: path.join(__dirname, '../logs/errors-%DATE%.log'),
    datePattern: 'YYYY-MM-DD-HH',
    zippedArchive: true,
    format: winston.format.json(),
    handleExceptions: true
  }))
} else {
  // Log to the console
  logger.add(new (winston.transports.Console)({
    timestamp: tsFormat,
    colorize: true,
    handleExceptions: true
  }))
}

module.exports = logger

我也在使用Express在我的错误处理中间件中,我有以下代码:

const logger = require('../config/winston')
function (err, req, res, next) {
    console.log(err)
    logger.error(err)
    res.status(500).send({ error: 'Please try again later.' })
}

问题是当错误发生时所有winston日志是:

{“级别”:“错误”}

虽然好老console.log()显示:

TypeError: Cannot read property 'filename' of undefined
    at router.post (/Users/balazsvincze/Desktop/testapi/app/routes/upload.js:16:33)
    at Layer.handle [as handle_request] (/Users/de/Desktop/testapi/node_modules/express/lib/router/layer.js:95:5)
    at next (/Users/balazsvincze/Desktop/testapi/node_modules/express/lib/router/route.js:137:13)
    at Immediate.<anonymous> (/Users/balazsvincze/Desktop/testapi/node_modules/multer/lib/make-middleware.js:53:37)
    at runCallback (timers.js:814:20)
    at tryOnImmediate (timers.js:768:5)
    at processImmediate [as _immediateCallback] (timers.js:745:5)

如何得到winston记录类似这样的内容,包括堆栈跟踪?

非常感谢!

EDIT:如果我将 logger.error(err) 行更改为 logger.error(err.message),至少我会得到以下结果:

{“message”:“无法读取属性“文件名” 未定义","级别":"错误"}

离我所追求的还很远。


我认为你缺少的是format.errors({ stack: true }) in winston.createLogger.

const logger = winston.createLogger({
  level: 'debug',
  format: format.combine(
    format.errors({ stack: true }),
    print,
  ),
  transports: [new transports.Console()],
});

See 这个 GitHub 线程 https://github.com/winstonjs/winston/issues/1338#issuecomment-482784056了解更多信息。

发生这种情况的原因是因为有趣的Error对象属性,例如.stack, 是不可枚举的。一些函数检查它们的参数是否是Error实例,例如console.error,其他函数会忽略所有不可枚举的属性,例如winston.<log-level> and JSON.stringify.

> console.error(new Error('foo'))
Error: foo
    at repl:1:15
    at Script.runInThisContext (vm.js:124:20)
    ...(abbr)

> JSON.stringify(new Error('foo'))
'{}'

话虽如此,让错误记录器本质上忽略错误是可怕的可用性......我只是为此浪费了太多时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Winston 不显示错误详细信息 的相关文章

  • Heroku Rails 应用程序级别不记录日志

    我在 Heroku 上有一个 Rails 应用程序 它没有在应用程序级别进行日志记录 当前版本 红宝石1 9 3 导轨3 1 3 在 config environment development rb 中有以下几行 config logge
  • Meteor.setTimeout 和 Meteor.methods 之间的并发

    在我的 Meteor 应用程序中实现回合制多人游戏服务器 客户端通过发布 订阅接收游戏状态 并且可以调用 Meteor 方法sendTurn将回合数据发送到服务器 他们无法直接更新游戏状态集合 var endRound function g
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 对于实时网站使用 Node.js 或 Ringojs 安全吗?

    正如标题中所述 我想知道使用实际的 omg 平台 即 Node js 和 Ringo js 的实际版本 之一来开发网站是否安全 另外 我想知道他们是否支持cookie sessions以及他们如何处理多字段帖子 PHP中的fieldname
  • HTML 格式的 Google Apps 脚本

    是否可以在我的 HTML 中使用 google apps 脚本 我希望能够从外部框架 例如 Node js 以纯 Javascript 形式从表单写入电子表格 https developers google com apps script
  • 护照本地猫鼬帐户注册的附加字段?

    我将 Passport local mongoose 与 Node js Express js MongoDB 一起用于 Web 应用程序 我想使用用户名字段 密码字段 公司名称字段和电话号码字段 所有字段 来注册用户作为字符串 但是 我只
  • 从logstash中的文件名获取事件的时间戳

    我们有一个将事件写入文件的进程 没有时间戳 文件名本身带有时间戳后缀 该时间戳应用于文件中的所有事件 现在 我尝试使用logstash的输入文件插件来解析该文件 有没有一种方法可以将文件名获取到字段 以便我可以使用 gsub 过滤器提取时间
  • Node.js 重写 toString

    我试图覆盖我的对象的默认 toString 方法 这是代码和问题 function test this code 0 later on I will set these this name test prototype toString f
  • Cosmos DB Mongo API 如何管理“请求率很大”情况

    我有以下代码 async function bulkInsert db collectionName documents try const cosmosResults await db collection collectionName
  • Nodejs Express中间件函数返回值

    我正在使用 NodeJS 和 Express 我有以下路线 中间件功能是Mobile 如果我不使用 return next 在 isMobile 函数中 应用程序会卡住 因为 NodeJS 不会移至下一个函数 但我需要 isMobile 函
  • Node.js 和 Passport 对象没有 validPassword 方法

    我正在使用 Node js Express Passport 创建一个简单的身份验证 本地 到目前为止我所达到的效果是 当输入错误的用户名或密码时 用户将被重定向到错误页面 但是当用户输入正确的用户名和密码时 我收到此错误 node mod
  • Quartz 不断将其日志放在我的所有日​​志文件中

    我有个问题 Quartz 不断将其日志放在我的所有日 志文件中 我可以将 Quart 的日志重定向到单独的文件吗 这是我的logback xml
  • 在回调中使用await(Microsoft Bot Framework v4 Nodejs)

    我正在尝试将回复发送回chatbot emulator从内部回调 async getUserDetails step console log inside get userdetaiuls modeiule this userDBObjec
  • 我的客户端 socket.io 在哪里?

    我使用 Express 和 React Engine 创建了一个同构 React 应用程序 现在我正在尝试连接socket io 在快速设置中我有 var express require express var app express va
  • 如何使用对象数组创建猫鼬模式

    我有这个 json data id 1 name Sample test description this is a sample test category tests points 100 startDate 2018 02 15 00
  • FluentD 日志不可读。已排除,下次检查

    面临 fluidd 日志无法读取 已排除 下次检查 我有一个在 kubernetes 设置中运行的 fluidD 守护进程集的简单配置 流利版本 fluidd 0 12 43 以下是我的配置
  • 在heroku上部署时出错,/bin/sh: 1: webpack: not found

    这是我在 heroku 网站上手动部署时遇到的错误 首先 我在 json 文件中遇到错误 因此我指定了正在运行的 npm yarn 和 node 版本 这些错误似乎已经清除 现在我就是这样的人 并且已经搜索了谷歌 但似乎找不到太多关于修复它
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • Nodejs mysql 获取正确的时间戳格式

    我在用着mysqljs https github com mysqljs mysql得到结果后sql我变得不同TimeStamp格式如下 created at Sat Jul 16 2016 23 52 54 GMT 0430 IRDT 但

随机推荐

  • 只有一个元素的双边框

    我试图获得一个双边框 下划线 标题 第一个是全宽 第二个是文本宽度 边界应该重叠 有一个简单的解决方案 其中两个元素嵌套如下 h1 span Title span h1 and css h1 border bottom 1px solid
  • Django WSGI 应用程序 SegFault

    所以我通过 apache 2 22 在 mod wsgi 中的 django wsgi 应用程序遇到段错误 这是 wsgi 应用程序 import os import sys sys path append home com zpencer
  • Moose 与 Perl 类似 C++ 的 OOP 用法

    我一直在玩Moose 找到了感觉 我想要一个纯虚函数的例子 就像 C 中的那样 但用 Moose 的说法 特别是以 C 的方式 我知道即使 Moose 强加了比普通 Perl 更严格的模型 仍然有不止一种方法可以完成我所要求的任务 通过方法
  • 如何在 FastAPI 中执行 Post/Redirect/Get (PRG)?

    我正在尝试从 POST 重定向到 GET 如何在 FastAPI 中实现这一点 你尝试了什么 我按照建议尝试了以下 HTTP 302 FOUND HTTP 303 SEE OTHER问题 863 FastAPI https github c
  • C++初学者问题:解引用与乘法[重复]

    这个问题在这里已经有答案了 刚刚接触C 当我看到乘法符号时 我经常偏离轨道 用于表示变量的取消引用 例如 unsigned char pixels vidgrabber getPixels 这会让其他人感到厌烦吗 让我思考这个问题的秘诀是什
  • 将字符串数组传递给 webservice 方法

    我有一个使用这种方法的网络服务 WebMethod public int stringTest string tString int numberOfStrings tString Length int returnS new int nu
  • 如何使JavaFX应用程序始终位于其他应用程序之上?

    我制作了一个作为 Mac 应用程序启动的 JavaFX 应用程序 我希望启动它 以便窗口始终位于其他应用程序之上 我怎样才能做到这一点 从 Java 8u20 ea b15 和 Java 8u6 开始 您可以执行以下操作stage setA
  • AbstractMethodError 创建 Kafka 流

    我正在尝试使用以下命令打开 Kafka 尝试过版本 0 11 0 2 和 1 0 1 流createDirectStream方法并收到此 AbstractMethodError 错误 Exception in thread main jav
  • 请求被中止:无法创建 SSL/TLS 安全通道。System.Net.WebException

    我正在使用 NopCommerce 的 PayPalStandard 插件 当我在 paypal 成功付款后下订单并使用 paypalstandard 插件付款时 它会重定向到商家网站 这时候就报错了 请求被中止 无法创建 SSL TLS
  • 如何在Delphi xe中使用HTTP Client登录网站

    我正在尝试在我的项目中实现 HTTP 客户端 我无法登录我的帐户 我被禁止 IdHTTP它运行良好 我的代码中缺少什么或有什么问题吗 NetHTTPClient1 属性 Connectiontimeout 30000 AllowCookie
  • d3heatmap包错误

    当我输入到 2022 年尺寸为 634 的矩阵 M 时 d3heatmap M 会输出一个错误 all vapply s is integer NA 不为 TRUE 我调试了它并导致了这一行 调试 colClust 为什么是这样 我传入的矩
  • 如何使用 RESTAdapter 处理单一资源

    ember data 中如何处理单一资源 假设我有以下 RESTful 路线 GET cart POST cart UPDATE cart DELETE cart ember data 预计find 返回一个数组 并且它会自动尝试将我传递给
  • 如何访问 *mut libc::FILE 的字段?

    我正在尝试访问不同的领域FILE结构体libc FILERust 中的实现根据内存映射stdio h repr C pub struct FILE pub p libc c char pub r libc c int pub w libc
  • 如果发生 NULL,Where 子句拒绝行

    一个理论问题 当触发下面给出的一组查询时 Create table Temp1 C1 varchar 2 Create table Temp2 C1 varchar 2 insert into Temp1 Values A NULL B i
  • 让iframe根据内容自动调整高度而不使用滚动条? [复制]

    这个问题在这里已经有答案了 例如 我希望它能够根据里面的内容调整它的高度 而不需要使用滚动 将其添加到您的部分
  • React Router v6 在组件之外导航

    在react router v5中我创建了这样的历史对象 import createBrowserHistory from history export const history createBrowserHistory 然后将其传递给路
  • 还可以根据产品自定义字段更改 WooCommerce Minicart 商品价格

    基于如果 WooCommerce 中的金额至少为 100 则允许客户设置产品价格 礼品卡 并添加到购物车 https stackoverflow com questions 63544045 allow customer to set th
  • 从选择下拉列表中选择项目时自动重定向

    该页面按照我想要的方式进行 http www web source net javascript redirect box htm http www web source net javascript redirect box htm 但我
  • 强密码正则表达式[重复]

    这个问题在这里已经有答案了 我需要强密码验证正则表达式 Special Characters Not Allowed Spaces Not Allowed Numeric Character At least one character A
  • Winston 不显示错误详细信息

    我在用winston对于日志记录来说 大多数情况下它运行良好 但是当出现异常时 它只是不打印任何详细信息 这是我的配置代码winston Create logger const logger winston createLogger Cre