2014-03-25 62 views
2

我想讓Heka讀我的Monolog文件(所以我可以使用Kibana查看它們),但它一直告訴我沒有匹配。正則表達式Heka讀Monolog日誌文件

這是我match_regex從我赫卡配置:

match_regex = "^\\[(?P<Timestamp>.*)\\] (?P<Channel>.+?)\\.(?P<Severity>[A-Z]+): (?P<Message>.*)" 

這裏是從日誌

[2014-03-24 19:07:08] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate" 
根據regex101( see here

的正則表達式是完全正常的採樣線。然而hela告訴我沒有匹配。

有人能請我指出正確的方向,我昨天花了整整一天的時間試圖讓這個工作。

編輯:唯一文件我似乎可以找到有關赫卡和獨白是這些幻燈片here

編輯:我剛剛發現這一點:https://regoio.herokuapp.com/

這告訴我,它應該工作使用如下:

match_regex = '^\[(?P<Timestamp>.*)\] (?P<Channel>.+?)\.(?P<Severity>[A-Z]+): (?P<Message>.*)' 

但事實並非如此。

+0

也許是因爲正則表達式以'^'開始?也許你需要設置正則表達式多行修飾符或什麼?這使得'^'也匹配行的開始,而不僅僅是整個字符串的開頭。 http://www.regular-expressions.info/anchors.html – rednaw

+0

它似乎不是問題,似乎我缺乏關注的是這個問題,我確實嘗試過,沒有^但沒有得到任何東西,只是因爲我忘了設置輸出 –

回答

1

清楚我又不是正常清醒,確保正則表達式是正確的15次後,我意識到我已經在我的hekad.toml文件遺忘

[LogOutput] 
message_matcher = "TRUE" 

[ElasticSearchOutput] 
message_matcher = "TRUE" 

我的完整文件現在看起來是這樣的:

[pos_log] 
type = "LogfileInput" 
logfile = "/home/sam/git/PosBranch/app/logs/dev.log" 
decoder = "monolog_decoder" 

[monolog_decoder] 
type = "PayloadRegexDecoder" 
match_regex = '^\[(?P<Timestamp>.*)\] (?P<Channel>.+?)\.(?P<Severity>[A-Z]+): (?P<Message>.*)' 
timestamp_layout = "2006-01-02 15:04:05" 
timestamp_location = "UTC" # optional, default value 

[monolog_decoder.severity_map] 
DEBUG = 7 
INFO = 6 
NOTICE = 5 
WARNING = 4 
ERROR = 3 
CRITICAL = 2 
ALERT = 1 
EMERGENCY = 0 

[monolog_decoder.message_fields] 
Type = "monolog_log" 
Logger = "sam" 
Hostname = "local" 
Channel = "%Channel%" 
Message = "%Message%" 
Payload = "" 

[LogOutput] 
message_matcher = "TRUE" 

[ElasticSearchOutput] 
message_matcher = "TRUE" 

和消息現在擀成kibana :)