work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Syslog的使用

Posted on 2021-09-22 15:07  work hard work smart  阅读(767)  评论(0编辑  收藏  举报

一、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