zoukankan      html  css  js  c++  java
  • Syslog的使用

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

    作者:Work Hard Work Smart
    出处:http://www.cnblogs.com/linlf03/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED3.txt
    模态登录
    javascript unshift()和shift()
    登录拦截功能
    springmvc 拦截器的使用小结
    handsontable 和 echarts都定义了require方法,初始化时冲突了,怎么办?
    eclipse缓慢了么?
    springmvc处理日期格式
    hibernate设置了not-null 为什么无效?
    java 和 javascript CryptoJS 进行HmacSHA1加密
  • 原文地址:https://www.cnblogs.com/linlf03/p/15319709.html
Copyright © 2011-2022 走看看