I'm trying to extract a port name from a log message such as this one (copied from my rsyslog permanent archive before it was transfered on into graylog 1.0.1)
*2015-04-13T22:42:19-05:00 10.146.156.20 INFO: Port 1:37 link up, 100Mbps FULL duplex* I want to extract the port name, which in this line is "*1:37*" but nothing, absolutely nothing I've tried has worked. I have no problem extracting that field from lines like: *2015-04-13T11:06:16-05:00 10.144.24.91 INFO: Port 7 link up, 100Mbps FULL duplex* I've tried "Port (\d+)", "Port (\S+)", "Port ([\d\:]+)", "Port (\d+:\d+)", "Port (\d*:?\d+)" and even "Port (.+) link", all with and without ^.+ and .+$ endings, and nothing works. I can always get the port out when it's just digits, but as soon as the input contains a colon, it refuses to match. I've spent two hours trying trick after trick and nothing has worked. I've been writing regexp in perl for decades so I'm pretty confident of my basic understanding of regexps. I've studied the Java documentation as well and don't see any reason why this continues to fail. What really, really is bugging me is that *ALL of those patterns worked fine in the extractor editor test page*, but once I save the extractor and go try to use it, it fails. I'm selecting actual messages out of the input and loading the messages up to test against. The only thing I can think of is that something about the underlying java is puking on the ":" in the content being matched, and it's causing the test to fail. Just for grins, I looked at the indexer page, and I see bunches of this: *MapperParsingException[failed to parse [port]]; nested: NumberFormatException[For input string: "1:3"];* But I have specifically told this extractor to NOT convert the thing to a number. I even tried forcing in a 'lowercase' converter, but that didn't help, either. It appears that the extractor is insisting on converting the field to a number before creating it, despite what I told it to do with the converter settings. I've searched through the group posts here and found the ones where variable white space was an issue; I've checked against the original content (see above) and that isn't the issue. (I tried using \s+, a space, etc, and those made no difference, either.) Can anyone show me a pattern that will properly return a match for *1:37*? And have it properly set the new field? Here's a copy/paste of the extractor as it exists right now, it's giving me port fields with values only when the values are one or more digits. None of them with : are getting set. Trying to extract data from *message* into *port*, leaving the original intact. Configuration: - regex_value: ^.+INFO:\s+Port\s+(\S+)\s.+$ Converters - uppercase Any suggestions would be most welcome. -- You received this message because you are subscribed to the Google Groups "graylog2" group. To unsubscribe from this group and stop receiving emails from it, send an email to graylog2+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.