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.

Reply via email to