ES 日志配置

ES 日志配置

目前版本(7.x),ES Server本身同时支持两种类型的日志,即json类型和text类型。

其中json类型的日志,以key-val对的形式输出日志,而text类型的日志则和一般日志格式类似:

JSON格式日志

{"type": "server", "timestamp": "2020-03-04T01:49:04,768-05:00", "level": "INFO", "component": "o.e.c.m.MetaDataMappingService", "cluster.name": "fred", "node.name": "node1", "message": "[packetbeat-7.4.2-2020.03.04-000001/ai0ZYe_dS8aPYRclVMWJng] update_mapping [_doc]", "cluster.uuid": "AERSy4mMRUGYNi7GoBrZ_Q", "node.id": "MRWjQpTmTtSIgiNMeq1I5A"  }

Text格式日志

[2020-03-04T01:49:04,768][INFO ][o.e.c.m.MetaDataMappingService] [node1] [packetbeat-7.4.2-2020.03.04-000001/ai0ZYe_dS8aPYRclVMWJng] update_mapping [_doc]

可以看到,JSON格式的日志,是自解释的,并且会附带一些集群和节点的信息。体积相对会较大,而Text格式的日志,内容会少一些。

在ES中,text类型属于旧的格式,在官方文档中,声称在未来,这种格式类型将会消失。

ES本身使用log4j记录日志,其配置文件位于$ES_HOME/config/log4j2.properties,配置文件中包含JSON和Text格式的配置。

######## Server JSON ############################
appender.rolling.type = RollingFile
appender.rolling.name = rolling
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json
appender.rolling.layout.type = ESJsonLayout
appender.rolling.layout.type_name = server

可以看到appender.rolling.layout.type = ESJsonLayout,这里指定了格式。

具体各项的含义可以参考官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/master/logging.html

ES中包含了好几种类型的logger,可以通过ES的API或者修改配置文件调整日志级别。

  1. ES API

    PUT /_cluster/settings
    {
      "transient": {
        "<name of logging hierarchy>": "<level>"
      }
    }
    

    例如:

    PUT /_cluster/settings
    {
      "transient": {
        "org.elasticsearch.action": "debug"
      }
    }
    
  1. 修改log4j2.properties配置文件

    logger.<unique_identifier>.name = <name of logging hierarchy>
    logger.<unique_identifier>.level = <level>
    
  2. 添加或修改ES配置文件elasticsearch.yml

    <name of logging hierarchy>: <level>
    
  3. 在启动命令行中添加参数

    -E <name of logging hierarchy>=<level>
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容