一、Syslog4j
Syslog4j是一个实现Syslog(RFC3164)协议的Java开源类库包括客户端与服务器端
1、引入依赖
<dependency> <groupId>org.syslog4j</groupId> <artifactId>syslog4j</artifactId> <version>0.9.30</version> </dependency>
2、客户端代码
public class SyslogClientDemo { public static void main(String[] args) throws InterruptedException { SyslogIF syslog = Syslog.getInstance("udp"); syslog.getConfig().setHost("localhost"); syslog.getConfig().setPort(8088); int i = 0; while (true){ i++; System.out.println("---------send msg start " + i + " ------"); syslog.info("[syslog client] hello world, this is a syslog message " + i); System.out.println("---------send msg end"); Thread.sleep(5000); } } }
3、服务端代码
public class SyslogServerDemo { public static void main(String[] args) throws Exception { DatagramSocket datagramSocket = new DatagramSocket(8088); while (true){ DatagramPacket packet = new DatagramPacket(new byte[512],512); datagramSocket.receive(packet); String msg = new String(packet.getData(),0, packet.getLength()); System.out.println(packet.getAddress() + "/" + packet.getPort() + ":" + msg); packet.setData("[syslog server]".getBytes()); datagramSocket.send(packet); } } }
二、搭建syslog服务端
1、搭建syslog服务端
安装一个syslog服务器:syslogwatcher
下载地址:http://pan.baidu.com/s/1dDlEEvJ
下载点击exe文件启动
第一次启动,需要设置Force codepage为UTF-8
2、java代码编写
向服务器发送日志
public class Syslog4jDemo2 { public static void main(String[] args) { try { //获取syslog的操作类,使用udp协议。 SyslogIF syslog = Syslog.getInstance("udp"); //设置syslog服务器端地址 syslog.getConfig().setHost("127.0.0.1"); //设置syslog接收端口,默认514 syslog.getConfig().setPort(514); StringBuffer buffer = new StringBuffer(); buffer.append("操作人:" + "张三" + ";"); buffer.append("操作时间:" + new Date()+ ";"); buffer.append("执行动作:" + "修改xxx" + ";"); syslog.log(0, URLDecoder.decode(buffer.toString(),"utf-8")); } catch (Exception e) { e.printStackTrace(); } } }
这里syslog.log 方法,第一个参数是数字0,代表日志的级别
范围为0~7的数字编码,表示了事件的严重程度。0最高,7最低
syslog为每个事件赋予几个不同的优先级:
LOG_EMERG:紧急情况,需要立即通知技术人员。
LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失。
LOG_CRIT:重要情况,如硬盘错误,备用连接丢失。
LOG_ERR:错误,不是非常紧急,在一定时间内修复即可。
LOG_WARNING:警告信息,不是错误,比如系统磁盘使用了85%等。
LOG_NOTICE:不是错误情况,也不需要立即处理。
LOG_INFO:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。
LOG_DEBUG:包含详细的开发情报的信息,通常只在调试一个程序时使用。
3、查看服务器收到的日志
参考:https://www.cnblogs.com/caroline4lc/p/4797485.html?share_token=f94c2be2-87a6-4c8f-aac3-43b2249ec5a9