目录
业务背景
通过syslog协议将业务系统的日志信息发送到日志审计系统,日志审计系统将对日志进行存储、监控和分析,保障业务系统资源安全。
实现方式
配置logback-spring.xml中appender标签。
项目工程截图:
图-1
代码:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>目标ip地址</syslogHost>
<port>514</port>
<facility>LOCAL1</facility>
<suffixPattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|${appName}|${env}|%-5level|%thread|%C:%M:%L| - %msg</suffixPattern>
</appender>
<root level="info">
<appender-ref ref="SYSLOG"/>
</root>
</configuration>
代码-1
验证
下面(代码-2)是syslog协议的测试服务代码。
测试步骤:
1. 将代码-1中“目标ip地址”改为本机ip地址。
2. 运行代码-2的测试方法server(),监听514端口。
若代码-1所在工程的控制台有日志输出,代码-2的控制台输出相同日志,则说明配置成功。
import org.junit.Test;
import org.productivity.java.syslog4j.Syslog;
import org.productivity.java.syslog4j.SyslogConstants;
import org.productivity.java.syslog4j.SyslogIF;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class SysLogTest {
@Test
public void server() throws SocketException {
DatagramSocket datagramSocket = new DatagramSocket(514);
while (true) {
DatagramPacket packet = new DatagramPacket(new byte[512], 512);
try {
datagramSocket.receive(packet);
String msg = new String(packet.getData(), 0, packet.getLength());
System.out.println(packet.getAddress() + "/" + packet.getPort() + ":" + msg);
packet.setData("server info".getBytes());
datagramSocket.send(packet);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
代码-2