首页 > 技术文章 > SpringBoot 整合Syslog

ruhuanxingyun 2021-03-16 20:57 原文

简介: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();

 

可参考:基于Java的Syslog服务器

推荐阅读