Hi,

You could dump the json into a file and check if the encoding is wrong
and to help figure out how to convert it correctly:

 Exec file_write("tmp/output.log",to_json() + "\n");

BTW, there is an enhancement for xm_json to ensure that the generated
JSON is valid UTF-8. This is currently in the EE only but will be added
to the NXLog CE soon.

Regards,
Botond

On Wed, 18 Jan 2017 10:58:53 +0100
Ruth Garzón <abir...@gmail.com> wrote:

> Hi,
> 
> some weeks ago we suddenly had some parsing issues with nxlog that we never
> had before. Nxlog is constantly logging this error:
> 
> *ERROR HTTP response status is not OK: 400 Bad Request* (which refers that
> the json we try to send to Elasticsearch is not well formed)
> 
> In Elasticsearch we found this exception flooding the logs:
> 
> 
> 
> *[2017-01-18 08:58:21,822][DEBUG][action.index             ]
> [ATVP6WIMMS001] failed to execute [index
> {[logstash-2017.01.18][nx_iis][AVmwzGL-zYWou6-64pmC],
> source[{"EventReceivedTime":"2017-01-11
> 10:33:26","csUser-Agent":"Mozilla/5.0+(iPhone;+CPU+iPhone+OS+10_0_2+like+Mac+OS+X)+AppleWebKit/602.1.50+(KHTML,+like+Gecko)+Mobile/14A456+[FBAN/FBIOS;FBAV/68.0.0.49.70;FBBV/41924288;FBRV/0;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iOS;FBSV/10.0.2;FBSS/2;FBCR/OrangeEspa?a;FBID/phone;FBLC/en_US;FBOP/5]",
> "sc-status":200}]MapperParsingException[*
> 
> 
> *failed to parse [csUser-Agent]]; nested: JsonParseException[Invalid UTF-8
> middle byte 0x61*
> The error apparently is due to Spanish language character ñ which appears
> in ES logs as a symbol.
> 
> Given that Spanish should be ISO 8859-1 encoding, I tried these 2
> configurations without any success:
> 
> 
> <Extension w3c>
>   Module xm_csv
>   Fields $date, $time, $s-ip, $cs-method, $cs-uri-stem, $cs-uri-query,
> $s-port, $cs-username, $c-ip, $csUser-Agent, $csReferer, $sc-status,
> $sc-substatus, $sc-win32-status, $sc-bytes, $cs-bytes, $time-taken
>   FieldTypes string, string, string, string, string, string, integer,
> string, string, string, string, integer, integer, integer, integer,
> integer, integer
>   Delimiter  ' '
>   QuoteChar   '"'
>   EscapeControl FALSE
>   UndefValue  -
> </Extension>
> 
> <Extension charconv>
>   Module xm_charconv
>   AutodetectCharsets utf-8, euc-jp, utf-16, utf-32, iso8859-2,
> windows-1252, ansi, cp850, cp1252, windows850, iso-8859-1, iso8859-1
> </Extension>
> 
> define PARSE_IIS_LOG \
>   if $raw_event =~ /^#/ drop(); \
>   else \
>   { \
>     w3c->parse_csv(); \
>     $Hostname = hostname(); \
>     $DateEventTime = strftime(parsedate($date + " " + $time),
> "%Y-%m-%dT%H:%M:%S+00:00"); \
>   }
> 
> <Input one>
>   Module  im_file
>   File   "D:\\LogFiles\\W3SVC19\\u_ex*.log"
>   SavePos True
>   ReadFromLast True
>   Exec    convert_fields("AUTO", "UTF-8");
>   Exec  %PARSE_IIS_LOG%;
> </Input>
> 
> 
> ------------------------------------------------------------------------------------------------------------------------------
> The second attempt was with this configuration instead:
> 
> <Input one>
>   Module  im_file
>   File   "D:\\LogFiles\\W3SVC19\\u_ex*.log"
>   SavePos True
>   ReadFromLast True
>   Exec  %PARSE_IIS_LOG%;
>   Exec    $raw_event = convert($raw_event, "iso8859-1", "UTF-8");
> </Input>
> 
> 
> Does anyone know what might be the issue why nxlog is not parsing properly
> this character? Maybe I am using the wrong encodings?
> Thanks and kind regards
> Ruth

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
nxlog-ce-users mailing list
nxlog-ce-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nxlog-ce-users

Reply via email to