首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElasticsearchTransport使用转换来改变indexPrefix吗?

ElasticsearchTransport使用转换来改变indexPrefix吗?
EN

Stack Overflow用户
提问于 2020-10-29 21:16:54
回答 1查看 60关注 0票数 0

更新:我实际上可以使用下面的代码更改indexPrefix,但在Kibana中用于过滤的实际_index的名称来自于原始的indexPrefix。在transformer方法中更改indexPrefix似乎为时已晚,因为已经使用原始前缀创建了_index

我在nodejs/express设置中使用winstonwinston-elasticsearch,并希望使用相同的日志记录器来记录不同的索引(不同的indexPrefix)

代码语言:javascript
复制
const logger = winston.createLogger({
  transports
});

传输是不同传输的数组。其中之一是ElasticsearchTransport,它接受一些参数,如indexPrefixlevel等。通过传入transformer方法作为参数,可以根据日志类型更改级别。

代码语言:javascript
复制
    new winstonElastic.ElasticsearchTransport({
      level: logLevel,
      indexPrefix: getIndex(),
      messageType: 'log',
      ensureMappingTemplate: true,
      mappingTemplate: indexTemplateMapping,
      transformer: (logData: any) => {
        const transformed: any = {};
        transformed['@timestamp'] = logData.timestamp ? logData.timestamp : new Date().toISOString();
        transformed.message = logData.message;
        transformed.level = parseWinstonLevel(logData.level);
        transformed.fields = _.extend({}, staticMeta, logData.meta);
        transformed.indexPrefix = getIndex(logData.indexPrefix);
        return transformed;
      },

每当记录器写入新条目时,就会调用transformer方法,我可以通过设置像message这样的属性来验证它是否工作。它还会将level覆盖到任何当前日志级别。由于某些原因,它不能在属性indexPrefix上工作--即使它改变了,也不会覆盖初始的indexPrefix。我甚至尝试删除初始值,但是日志记录失败了,因为我从未设置过indexPrefix

有人知道为什么吗?是否与下面列出的mappingTemplate有关?:

代码语言:javascript
复制
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0,
    "index": {
      "refresh_interval": "5s"
    }
  },
  "mappings": {
    "properties": {
      "@timestamp": { "type": "date" },
      "@version": { "type": "keyword" },
      "message": { "type": "text" },
      "severity": { "type": "keyword" },
      "fields": {
        "dynamic": true,
        "properties": {}
      }
    }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2020-10-30 19:35:45

好吧,如果有人感兴趣的话。我最终做了一个loggerFactory。我通过工厂创建了一个带有正确indexPrefix的记录器--这样我就可以为每个我想要的indexPrefix创建一个记录器实例……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64591885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档