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或者修改配置文件调整日志级别。
-
ES API
PUT /_cluster/settings { "transient": { "<name of logging hierarchy>": "<level>" } }
例如:
PUT /_cluster/settings { "transient": { "org.elasticsearch.action": "debug" } }
-
修改
log4j2.properties
配置文件logger.<unique_identifier>.name = <name of logging hierarchy> logger.<unique_identifier>.level = <level>
-
添加或修改ES配置文件elasticsearch.yml
<name of logging hierarchy>: <level>
-
在启动命令行中添加参数
-E <name of logging hierarchy>=<level>