want to use graylog to store the login log of the system. The java code is as follows:
private static void send(String host, int port, Map<String, Object> params) throws Exception {
if (SOCKET == null) {
SOCKET = new DatagramSocket();
}
InetAddress address = InetAddress.getByName(host);
String content = JSON.toJSONString(params);
DatagramPacket packet = new DatagramPacket(content.getBytes("UTF-8"), content.length(), address, port);
SOCKET.send(packet);
}
where content
string is as follows:
{
"version":"1.1",
"host":"test.com",
"short_message":"loginLog",
"full_message":"loginLog",
"_name":"",
"_result":"SUCCESS:",
"_user_id":"f69cf0a3-ad33-4b7f-b770-ea18d615f6a1",
"_username":"test",
"_ip":"192.168.1.33"
}
after repeated tests, once the field contains Chinese, it cannot be stored successfully, but the description of GELF in Graylog"s document is as follows:
- _ [additional field] string (UTF-8) or number
every field you send and prefix with an underscore (_) will be treated as an additional field. Allowed characters in field names are any word character (letter, number, underscore), dashes and dots. The verifying regular expression is: ^ [w. -] * $. Libraries SHOULD not allow to send id as additional field (_ id). Graylog server nodes omit this field automatically.
just use utf-8
encoding.
try again and again but still can"t solve it, come to ask for help.
I hope all the bosses can give me some suggestions. Thank you very much!