问题syslog 就不多说了,最近碰到一个问题:在用LogInsight的时候,一条日志会被分成两条,第一条以…结尾,第二条以…开头,并且第二条没有被正确的建立索引。想了一下由于是用log4j发的syslog消息,所以消息被分割可能是log4j的问题,于是看了一下代码,找到这么两块:if(packet.length() > 256) { this.splitPacket(hdr, packet
摘要由CSDN通过智能技术生成
syslog 就不多说了,最近碰到一个问题:在用LogInsight的时候,一条日志会被分成两条,第一条以…结尾,第二条以…开头,并且第二条没有被正确的建立索引。想了一下由于是用log4j发的syslog消息,所以消息被分割可能是log4j的问题,于是看了一下代码,找到这么两块:
if(packet.length() > 256) {
this.splitPacket(hdr, packet);
} else {
this.sqw.write(packet);
private void splitPacket(String header, String packet) {
int byteCount = packet.getBytes().length;
if(byteCount <= 1019) {
this.s
问题syslog 就不多说了,最近碰到一个问题:在用LogInsight的时候,一条日志会被分成两条,第一条以…结尾,第二条以…开头,并且第二条没有被正确的建立索引。想了一下由于是用log4j发的syslog消息,所以消息被分割可能是log4j的问题,于是看了一下代码,找到这么两块:if(packet.length() > 256) { this.splitPacket(hdr, packet
Syslog 简介
在Unix类操作系统上,syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。
完整的syslog日志中包含产生日志的程序模块(Facility...
日志采集之前一直使用的是syslogUDP的方式,因为采集的是网络流量日志,所以对于日志数量丢失没有太在意,一次偶然的对数发现syslogUDP方式丢包太过严重,经排查发现使用rsyslog方式发送UDP报文时除去头部,body长度超过1472字节时会被截断,于是flume采集时拦截器进行json校验不通过。
**解决方案:**牺牲性能,换syslogTCP
更换syslogTCP后进行测试时,发送较长报文,tcpdump抓包有数据,kafka中无数据,推测flume采集出错,查看flume日志发现如下信息
Java可以通过syslog4j开发syslog 客户端。有多种包对此提供了支持,例如:org.graylog2,引用方式如下:
<dependency>
<groupId>org.graylog2</groupId>
<artifactId>syslog4j</artifactId>
```java
import org.productivity.java.syslog4j.Syslog;
import org.productivity.java.syslog4j.SyslogIF;
public class SyslogTest {
public static void main(String[] args) {
SyslogIF syslog = Syslog.getInstance("udp");
syslog.getConfig().setHost("syslog-server-hostname");
syslog.getConfig().setPort(514);
syslog.getConfig().setFacility("LOCAL0");
syslog.getConfig().setSendLocalName(true);
syslog.info("This is a test message from Java program to syslog server.");
其中,需要将 "syslog-server-hostname" 替换为实际的syslog服务器的主机名。此外,还可以根据需要设置其他参数,例如端口,facility等。最后,调用 syslog.info("message") 方法将消息发送到syslog服务器。
希望对你有所帮助!