SpringBoot 整合Syslog
简介:Syslog常被称作系统日志,是一种用来在互联网协议中传递记录档消息的标准;Syslog也是一种主从式协议,syslog发送端会发送出一个小的文字消息到syslog接收端;支持UDP/TCP协议传输,默认端口514。
1. pom.xml Maven依赖
<dependency> <groupId>org.graylog2</groupId> <artifactId>syslog4j</artifactId> <version>0.9.60</version> </dependency>
2. syslog客户端
SyslogIF clientInstance = Syslog.getInstance(SyslogConstants.UDP); SyslogConfigIF clientConfig = clientInstance.getConfig(); clientConfig.setHost("localhost"); clientConfig.setPort(514); clientInstance.log(SyslogConstants.LEVEL_ALERT, URLDecoder.decode("测试一下", "utf-8"));
3. syslog服务端
new Thread(() -> { // 服务端 SyslogServerIF serverInstance = SyslogServer.getInstance(SyslogConstants.UDP); UDPNetSyslogServerConfig serverConfig = (UDPNetSyslogServerConfig) serverInstance.getConfig(); serverConfig.setHost("localhost"); serverConfig.setPort(514); // 防止数据过大被截取导致不完整 serverConfig.setMaxMessageSize(SyslogConstants.SYSLOG_BUFFER_SIZE * 10); serverConfig.addEventHandler(new SyslogServerSessionlessEventHandlerIF() { @Override public void event(SyslogServerIF syslogServerIF, SocketAddress socketAddress, SyslogServerEventIF syslogServerEventIF) { // syslog日志 String message = syslogServerEventIF.getMessage(); log.info("接收到日志:{}", message); } @Override public void exception(SyslogServerIF syslogServerIF, SocketAddress socketAddress, Exception e) { } @Override public void initialize(SyslogServerIF syslogServerIF) { } @Override public void destroy(SyslogServerIF syslogServerIF) { } }); // 启动服务端 serverInstance.run(); }).start();
4. 注意点:报文内容被截取,如果是netty代理udp的,注意proxy_buffer_size参数会有影响。
可参考:基于Java的Syslog服务器