Regex 用于Heka读取Monolog日志文件的正则表达式

Regex 用于Heka读取Monolog日志文件的正则表达式,regex,kibana,monolog,Regex,Kibana,Monolog,我试图让赫卡阅读我的独白文件(这样我就可以使用Kibana查看它们),但它一直告诉我没有匹配项 这是我的Heka配置中的匹配正则表达式: match_regex = "^\\[(?P<Timestamp>.*)\\] (?P<Channel>.+?)\\.(?P<Severity>[A-Z]+): (?P<Message>.*)" 根据regex101()的说法,regex是完美的。但希拉告诉我没有对手 有人能给我指一下正确的方向吗?我昨天花了一

我试图让赫卡阅读我的独白文件(这样我就可以使用Kibana查看它们),但它一直告诉我没有匹配项

这是我的Heka配置中的
匹配正则表达式

match_regex = "^\\[(?P<Timestamp>.*)\\] (?P<Channel>.+?)\\.(?P<Severity>[A-Z]+): (?P<Message>.*)"
根据regex101()的说法,regex是完美的。但希拉告诉我没有对手

有人能给我指一下正确的方向吗?我昨天花了一整天的时间试图让它起作用

编辑:我能找到的关于赫卡和独白的唯一文档就是这些幻灯片

编辑:我刚刚发现:

这告诉我,它应该使用以下方法工作:

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

但事实并非如此。

很明显,昨天我没有完全清醒,在确认正则表达式15次正确后,我意识到我忘记了

[LogOutput]
 message_matcher = "TRUE"

[ElasticSearchOutput]
 message_matcher = "TRUE"
在我的
hekad.toml
文件中

我的完整文件现在如下所示:

[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"
[位置日志]
type=“LogfileInput”
logfile=“/home/sam/git/PosBranch/app/logs/dev.log”
decoder=“monolog\u解码器”
[独白解码器]
type=“PayloadRegexDecoder”
匹配正则表达式='^\[(?P.*)\](?P.+?)\(?P[A-Z]+):(?P.*)”
时间戳布局=“2006-01-02 15:04:05”
timestamp_location=“UTC”#可选,默认值
[独白解码器。严重性映射]
调试=7
信息=6
通知=5
警告=4
误差=3
临界值=2
警报=1
紧急情况=0
[独白解码器.消息字段]
Type=“monolog\u log”
Logger=“sam”
Hostname=“本地”
Channel=“%Channel%”
Message=“%Message%”
有效载荷=“”
[注销输出]
消息\u matcher=“TRUE”
[弹性搜索输出]
消息\u matcher=“TRUE”

消息现在滚到了kibana:)

也许是因为正则表达式以
^
开头?也许您需要设置正则表达式多行修饰符或其他什么?这使得
^
也匹配行的开头,而不仅仅是整个字符串的开头。似乎^不是问题所在,似乎我的注意力不足是问题所在,我确实尝试过使用^和不使用^,但没有得到任何结果,只是因为我忘了设置输出
[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"