1.实现发送
Java可以通过syslog4j开发syslog 客户端。有多种包对此提供了支持,例如:org.graylog2,引用方式如下:
<dependency>
<groupId>org.graylog2</groupId>
<artifactId>syslog4j</artifactId>
<version>0.9.60</version>
</dependency>
另外一种 org.syslog4j ,引用方式如下:
<dependency>
<groupId>org.syslog4j</groupId>
<artifactId>syslog4j</artifactId>
<version>0.9.30</version>
</dependency>
实现的代码,二者差别不大
public static void main(String[] args) {
String aa ="你想要的信息";
SyslogIF syslog = Syslog.getInstance(SyslogConstants.UDP);// 协议
syslog.getConfig().setHost(HOST);// 接收服务器
syslog.getConfig().setPort(PORT);// 端口
syslog.getConfig().setMaxMessageLength(1024000);
try {
syslog.log(0, URLDecoder.decode(aa, "utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
2. 遇到问题
(1) 发送出去的内容过长时会被截断,然后分批次发送出去。
参照上面的代码会避免这个问题,这些包默认发送长度是1024,我们可以通过 syslog.getConfig().setMaxMessageLength这个方法来设定他的长度
(2)遇到中文被截断的情况
此问题我没有遇到,搜到网上的解决方案:如果采用的是org.syslog4j,将版本升级至0.9.46 即可,可惜的是此版本在maven仓库中没有。