Logstash在其操做期间发出内部日志,这些日志位于LS_HOME/logs
(或/var/log/logstash
用于DEB/RPM)中,默认的日志级别是INFO
。Logstash的日志框架基于Log4j 2框架,其大部分功能都直接向用户公开。html
在调试问题时,特别是插件问题时,增长日志级别到DEBUG
以得到更详细的消息是颇有帮助的。之前,你只能设置应用于整个Logstash产品的日志级别,从5.0开始,你能够在Logstash中为特定的子系统配置日志记录。例如,若是你正在调试Elasticsearch输出的问题,你能够仅为该组件增长日志级别,经过这种方式,你能够减小因为过分日志记录而产生的噪音,并有效地关注问题区域。node
你可使用--path.logs
设置指定日志文件的位置。apache
Logstash带有一个使用log4j2.properties
文件的开箱即用的设置,你能够修改此文件以更改旋转策略、类型和其余log4j2配置,你必须从新启动Logstash以应用对此文件所作的任何更改。json
Logstash的慢日志功能能够在特定事件须要异常长的时间才能经过管道时进行日志记录,与普通的应用程序日志同样,你能够在--path.logs
目录中找到慢日志,使用如下选项在logstash.yml
设置文件中配置Slowlog:api
slowlog.threshold.warn (default: -1) slowlog.threshold.info (default: -1) slowlog.threshold.debug (default: -1) slowlog.threshold.trace (default: -1)
默认状况下,这些值被设置为-1nanos
,表示不会调用slowlog的无限阈值,这些slowlog.threshold
字段是使用时间值格式配置的,该格式支持普遍的触发间隔。可使用如下时间单位指定正数值范围:nanos
(纳秒)、micros
(微秒)、ms
(毫秒)、s
(秒)、m
(分钟)、h
(小时)、d
(天)。ruby
这里有一个例子:app
slowlog.threshold.warn: 2s slowlog.threshold.info: 1s slowlog.threshold.debug: 500ms slowlog.threshold.trace: 100ms
在上面的配置中,将记录在过滤器中处理耗时超过两秒的事件,日志将包含致使缓慢的完整事件和过滤器配置。框架
你能够修改log4j2.properties
文件并从新启动你的Logstash,但这既乏味又会致使没必要要的停机,相反,你能够经过日志记录API动态更新日志记录级别,这些设置当即生效,不须要从新启动。curl
默认状况下,日志API试图绑定到tcp:9600
,若是该端口已经被另外一个Logstash实例使用,你须要使用--http.port
标志启动Logstash指定绑定到另外一个端口,有关更多信息,请参阅命令行标志。
要更新日志级别,请使用你感兴趣的子系统/模块并预先设置logger.
,例如:jvm
curl -XPUT 'localhost:9600/_node/logging?pretty' -H 'Content-Type: application/json' -d' { "logger.logstash.outputs.elasticsearch" : "DEBUG" } '
当这个设置生效时,Logstash为配置中指定的全部Elasticsearch输出发出DEBUG级别日志,请注意,这个新设置是暂时的,不会在从新启动时存活。
应该向log4j2.properties
添加持久性更改,例如:
logger.elasticsearchoutput.name = logstash.outputs.elasticsearch logger.elasticsearchoutput.level = debug
要检索运行时可用的日志记录子系统列表,能够对_node/logging
执行GET
请求:
curl -XGET 'localhost:9600/_node/logging?pretty'
示例响应:
{ ... "loggers" : { "logstash.agent" : "INFO", "logstash.api.service" : "INFO", "logstash.basepipeline" : "INFO", "logstash.codecs.plain" : "INFO", "logstash.codecs.rubydebug" : "INFO", "logstash.filters.grok" : "INFO", "logstash.inputs.beats" : "INFO", "logstash.instrument.periodicpoller.jvm" : "INFO", "logstash.instrument.periodicpoller.os" : "INFO", "logstash.instrument.periodicpoller.persistentqueue" : "INFO", "logstash.outputs.stdout" : "INFO", "logstash.pipeline" : "INFO", "logstash.plugins.registry" : "INFO", "logstash.runner" : "INFO", "logstash.shutdownwatcher" : "INFO", "org.logstash.Event" : "INFO", "slowlog.logstash.codecs.plain" : "TRACE", "slowlog.logstash.codecs.rubydebug" : "TRACE", "slowlog.logstash.filters.grok" : "TRACE", "slowlog.logstash.inputs.beats" : "TRACE", "slowlog.logstash.outputs.stdout" : "TRACE" } }
要重置任何可能经过日志API动态更改的日志级别,请向_node/logging/reset
发送PUT
请求,全部日志级别都将恢复到log4j2.properties
文件中指定的值。
curl -XPUT 'localhost:9600/_node/logging/reset?pretty'