javascript - 如何禁用 winston elasticstack 客户端和传输生成的调试控制台输出?

标签 javascript node.js elasticsearch winston

我正在使用 winston v3.2.1winston-elasticsearch v0.8.8@elastic/elasticsearch v7.6.1 推送日志我的 NodeJS 服务条目到 Elastic Search 集群 v7.6.2。

我的记录器构造如下(参见 https://github.com/vanthome/winston-elasticsearchhttps://www.npmjs.com/package/@elastic/elasticsearch ):

import { Client } from '@elastic/elasticsearch';
import winston, { Logger } from 'winston';
import { ElasticsearchTransport } from 'winston-elasticsearch';
import { ELASTIC_HOST, ELASTIC_PORT, LOG_LEVEL } from './environment';
...
        this.logger = winston.createLogger({
            transports: [
                new ElasticsearchTransport({
                    client: new Client({
                        node: `http://${ELASTIC_HOST}:${ELASTIC_PORT}`
                    }),
                    index: 'sector',
                    level: LOG_LEVEL // Events I log that are 'info' or worse will be transported.
                })
            ]
        });

然后我直接使用 logger 引用进行记录:

this.logger.info(`Kill signal received: ${signal}`);

我可以看到我的日志条目被推送到 Elastic Search 集群,但控制台日志中充斥着来自 elasticsearchwinston:elasticsearch 记录器的调试输出。我认为它们属于 Elastic Node 客户端和 Elasticsearch Transport 实现。

2020-05-12T22:10:10.114Z elasticsearch Nothing to resurrect
...
2020-05-12T22:10:10.116Z winston:elasticsearch starting bulk writer
...
2020-05-12T22:10:18.122Z winston:elasticsearch nothing to flush
2020-05-12T22:10:20.123Z winston:elasticsearch tick
2020-05-12T22:10:20.123Z winston:elasticsearch nothing to flush

我的服务在 Docker 容器内运行,我不希望 Docker 日志充满调试噪音。我尝试将传输级别设置为 error,甚至完全删除 Console 传输,但调试噪音仍然存在。我尝试了以下方法来抑制控制台输出,但运气不佳:

  • winston.level = 'error';
  • winston.transports.Console.level = 'error';
  • winston.transports.Console.silent = true;
  • this.logger.remove(winston.transports.Console);
  • winston.remove(winston.transports.Console);

我找到了几个关于这个主题的话题,但运气不好:

这几乎就像客户端和传输器在使用单独的日志记录机制。

有什么建议吗?

最佳答案

我已经确认输出根本不是由 winston 生成的。这就是我无法使用上面列出的方法禁用它的原因。

看起来 ElasticsearchTransport 实现使用了一个名为 debug 的包.当在 DEBUG 环境变量中指定模式时,它会打开。我将其设置为 DEBUG=* 以便我可以看到 Express 输出。当我删除环境变量时,调试噪音停止了。

如果您在控制台中看到调试噪音,请检查 debug包不是原因。许多包似乎都在使用它。

关于javascript - 如何禁用 winston elasticstack 客户端和传输生成的调试控制台输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61763394/

相关文章:

javascript - ('drop' 上的 Safari jQuery )无法处理文件

javascript - 如何在 Angular typescript 或 jquery 中全局更新变量?

node.js - 新鲜 meteor 1.3 在 win 7 上无法运行

elasticsearch - 以较高的文档频率获取术语

javascript - 在元素上使用 css 属性内容异常存储 javascript 的信息

javascript - 有人可以解释 ENOBUFS 错误吗?

javascript - 如何使用express js 3.X和Angular js将图像流式传输到亚马逊s3?

elasticsearch - 带有前缀查询的Elastic Search不区分大小写查询

regex - Elasticsearch 删除特殊字符(来自非基于 ascii 的语言)

javascript - 我的 jQuery .click 事件正在创建一个错误,因为它有一个 click() 事件