问题标签 [bunyan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2213 浏览

node.js - 使用 node-bunyan-syslog 记录大消息

我正在使用node-bunyan-syslog为我的节点应用程序的 Bunyan 记录器提供 syslog 流,这似乎是节点应用程序中 syslog 日志记录的常用库。这是我的基本记录器实现:

每隔一段时间,这个日志语句:

引发以下错误:

因为我的流配置为使用 UDP,所以我阅读了UDP(7) 规范,这表明当正在传输的数据包的大小超过为正在传输的网络接口设置的 MTU(最大传输单元)时,会引发 EMSGSIZE 错误用过的。

我的第一个想法是data传递给日志语句的内容太大(实际上,如果我只记录小消息,错误就会停止抛出),因为它有时可能是多个 KB 大小。但是,日志消息的大小不应该与我实例化的 node-bunyan-syslog 流传输的数据包大小无关吗?

我查看了 node-bunyan-syslog 源代码,试图确定它是否将自己的消息分解为数据包,但我找不到任何这样的逻辑。

一种解决方案是首先检查建议的日志消息的大小,并且仅在小于一定大小时才记录,但这似乎没有必要的限制。我希望 node-bunyan-syslog 或其底层套接字库能够处理诸如 MTU 之类的基本协议限制,而不会将相关错误传播给用户。

我对原因的评估是否准确?此上下文中的 EMSGSIZE 错误是否是由超过 MTU 引起的?如何通过 Bunyan 和 node-bunyan-syslog 成功记录大消息?

0 投票
0 回答
222 浏览

node.js - aws 上的 Bunyan 记录器泄漏文件描述符

我正在使用 bunyan 登录我在 aws 中托管的 node.js API。当我加载测试 API 时,它会在 4000 个文件描述符之后崩溃。我们发现应用程序上打开的文件描述符随着每个请求的增加而增加。下面给出了配置 bunyan 记录器的代码

我们在托管在 ECS 上并使用 restify 的 docker 容器中运行此 API。bunyan 记录器是否已正确实施?有什么我错过的吗?

0 投票
1 回答
5245 浏览

node.js - 如何使用 Bunyan 将日志保存到特定文件中?

我的 NodeJS 应用程序出现故障,我想正确记录在使用它时发生的所有事情。

我遇到了Bunyan,它看起来很棒。除了,像所有其他“记录器”一样,它只是打印到stdout这让我很难正确分析正在发生的事情。

例如,有什么方法可以让 Bunyan 始终输出到某个文件logs.json

0 投票
1 回答
165 浏览

json - Is it possible to use the bunyan cli formatter to process logback logs?

My logback logs from a Java app are generated in json format. The node service is generating json logs via bunyan. Is it possible to use the buynan cli on the logback log stream to make the those logs human readable like the cli can for the node buynan logs? or is there a similar cli to use for logback output reformatting?

0 投票
0 回答
69 浏览

node.js - 当目标关闭时,Bunyan 流占用 100% cpu

我正在使用“ bunyan-redis ”(已经在那里提出了一个问题),以便将我的所有日​​志发送到一个 redis 代理。

当 redis 代理已满且无法接受更多输入日志时,节点应用程序开始以 100% 的 CPU 运行,并且无法接受任何请求。

如何禁用日志与节点活动之间的这种依赖关系?我不希望任何记录器问题会导致应用程序停止反应。

在“c4.large”EC2 机器上运行的 Nodejs 0.10.25

0 投票
1 回答
249 浏览

node.js - nodejs bunyan 元素顺序

我正在使用 bunyan,这是我在日志中所写内容的一个示例。

有没有办法改变打印字段的顺序?由此:

{"name":"appName","hostname":"ip","pid":5817,"level":30," msg ":"message"," time ":"2015-10-15T19:04: 01.596Z","v":0}

对此:

{"时间":"2015-10-15T19:04:01.596Z"," msg ":"message","name":"appName","hostname":"ip","pid":5817,"level ":30,"v":0}

0 投票
1 回答
1391 浏览

node.js - NodeJS Bunyan Logstash 日志索引

我正在使用 Bunyan 和 bunyas-lumberjack 将我的日志发送到 log stash 并在弹性搜索中索引它们。我面临的问题是当我过滤日志时:我正在使用 Logstash 的基本过滤器:

它将来自 bunyan 的 JSON 放入 source.message 字段并在弹性搜索中对其进行索引。如何将 bunyan 中的每个字段索引到特定的弹性搜索字段中,以便我可以搜索它或在 Kibana 中使用它?

我附上我现在得到的和我想得到的作为例子。目前:

通缉:

0 投票
1 回答
1402 浏览

node.js - 对 Node.js 日志系统进行基准测试——我是否遗漏了这方面的一些信息?

我昨天意识到 Node.js 的大多数日志库似乎都使用阻塞/同步调用。日志记录通常是 I/O 操作,使用 Node.js,我们应该尽可能使用非阻塞/异步 I/O。

console.log(process.stdout.write) 从 Node.js 0.6 开始就是同步操作,TMK

在我看来,对于执行大量日志记录语句的服务器,使用阻塞 I/O 可能会导致很大的性能损失。

我用 Redis、fs、Bunyan 和 Winston 运行了“日志”语句,我在 Macbook Pro 上得到了这些结果:

雷迪斯:16毫秒

fs 写入流:90 毫秒

班扬:414毫秒

温斯顿:491ms

因此,似乎仅使用 Redis 客户端通过网络 I/O 发送消息是从 Node.js 事件循环中获取数据的最快方式。

以下是测试:

我是在做某事还是我有什么问题?

理想情况下,对于 Node.js 服务器,您可能会使用 Redis 将日志请求发送到某处的日志服务器,该服务器将处理队列。

0 投票
3 回答
820 浏览

node.js - Restify - 从模块访问记录器的最佳实践

我已经寻找了一段时间的答案,只是没有提出解决方案。我知道我可以从 req.log.xxxxx(...) 访问内置记录器,但是我需要进入我的控制器的模块呢?例如:

在我的控制器文件中, someController.js

在 myModule.js 中:

我不太喜欢将日志对象传递给模块方法的想法,因为这对我来说似乎很草率。如果这是唯一的解决方案,那么我会接受它。

0 投票
1 回答
302 浏览

node.js - Bunyan 较高级别登录到较低级别的流

我试图在我的 nodejs 应用程序中使用 bunyan,但是我坚持这种奇怪的行为。像这样定义记录器:

我在这样的函数中调用它们:

现在可预测的行为将是 致命的。日志有{"name":"Test","hostname":"ENIGMA","pid":16793,"level":60,"msg":"FATAL!","time":"2016-01-21T09:12:34.293Z","v":0}

error.log{"name":"Test","hostname":"ENIGMA","pid":16793,"level":50,"msg":"ERROR!","time":"2016-01-21T09:12:34.295Z","v":0} 等等。

但是,在我的应用程序中, fatal.log{"name":"Test","hostname":"ENIGMA","pid":16793,"level":60,"msg":"FATAL!","time":"2016-01-21T09:12:34.293Z","v":0}

error.log{"name":"Test","hostname":"ENIGMA","pid":16793,"level":60,"msg":"FATAL!","time":"2016-01-21T09:12:34.293Z","v":0} {"name":"Test","hostname":"ENIGMA","pid":16793,"level":50,"msg":"ERROR!","time":"2016-01-21T09:12:34.295Z","v":0}

warn.log{"name":"Test","hostname":"ENIGMA","pid":16793,"level":60,"msg":"FATAL!","time":"2016-01-21T09:12:34.293Z","v":0} {"name":"Test","hostname":"ENIGMA","pid":16793,"level":50,"msg":"ERROR!","time":"2016-01-21T09:12:34.295Z","v":0} {"name":"Test","hostname":"ENIGMA","pid":16793,"level":40,"msg":"WARN!","time":"2016-01-21T09:12:34.296Z","v":0}

等等。

较高级别的日志正在进入较低的流。如何防止这种行为并使每个级别登录到自己的特定文件中?(我还在node-bunyan报告了一个问题)