簡介: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服務器