t0xa / gelfj

Graylog Extended Log Format (GELF) implementation in Java and log4j appender without any dependencies.
https://github.com/t0xa/gelfj/wiki
Other
186 stars 116 forks source link

Data encoding is not correct when you send it to stream #35

Closed grolfcry closed 11 years ago

grolfcry commented 11 years ago

when data contains non latin symbols (may be non UTF strings) then it will broken on server side, because server use UTF-8. You need to use encoding when data in string format are being converted to bytes. One of that place is GelfMessage->gzipMessage.

  try {
            GZIPOutputStream stream = new GZIPOutputStream(bos);
            stream.write(message.getBytes(<b>"UTF-8"</b>));
...

Patch text:

--- gelfj/src/main/java/org/graylog2/GelfMessage.java (revision 12b0e906d74e71e914a53f94d127a54f65cc5886) +++ gelfj/src/main/java/org/graylog2/GelfMessage.java (revision ) @@ -124,7 +124,7 @@

         try {
             GZIPOutputStream stream = new GZIPOutputStream(bos);
-            stream.write(message.getBytes());
+            stream.write(message.getBytes("UTF-8"));
             stream.finish();
             stream.close();
             byte[] zipped = bos.toByteArray();
t0xa commented 11 years ago

Thank you! Great catch!