我使用winston v3.2.1、winston-elasticsearch v0.8.8和@elastic/elasticsearch v7.6.1将winston-elasticsearch v0.8.8服务的日志条目推送到弹性搜索集群v7.6.2。
我的记录器构造如下(请参阅https://github.com/vanthome/winston-elasticsearch和https://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}`);我可以看到,我的日志条目正被推送到弹性搜索集群,但是控制台日志中充斥着来自elasticsearch和winston:elasticsearch记录器的调试输出。我认为它们属于Elastic客户端和Elasticsearch传输实现。
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);我在这个问题上找到了几条线索,但没有运气:
这几乎就像客户端和传输程序使用单独的日志机制一样。
有什么建议吗?
https://stackoverflow.com/questions/61763394
复制相似问题