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'