Java发送日志到Syslog中

maven依赖

        <dependency>
            <groupId>org.graylog2</groupId>
            <artifactId>syslog4j</artifactId>
            <version>0.9.60</version>
        </dependency>
        <dependency>
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android-json</artifactId>
            <version>0.0.20131108.vaadin1</version>
            <scope>compile</scope>
        </dependency>

示例代码

package com.example.demoLog4j2.logging;

import org.graylog2.syslog4j.Syslog;
import org.graylog2.syslog4j.SyslogConstants;
import org.graylog2.syslog4j.SyslogIF;
import org.json.JSONException;
import org.json.JSONObject;

import java.net.URLDecoder;
import java.util.Date;

public class SysLogSender {
    private static final String ENC = "utf-8";
    private static final String HOST = "192.168.88.134";
    private static final int PORT = 514;

    public static void main(String[] args) throws JSONException {
        new SysLogSender().send(System.currentTimeMillis() + "", "这是一条测试日志");
    }

    public void send(String traceId, String msg) {
        SyslogIF syslog = Syslog.getInstance(SyslogConstants.UDP);
        syslog.getConfig().setHost(HOST);
        syslog.getConfig().setPort(PORT);
        syslog.getConfig().setSendLocalName(true);//携带本机主机名
        try {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("traceId", traceId);
            jsonObject.put("time", new Date().toString().substring(4, 20));
            jsonObject.put("message", msg);
            jsonObject.put("level", 0);
            syslog.log(0, URLDecoder.decode(jsonObject.toString(), ENC));

            jsonObject.put("level", 1);
            syslog.log(1, URLDecoder.decode(jsonObject.toString(), ENC));

            jsonObject.put("level", null);
            jsonObject.put("type", "info");
            syslog.info(URLDecoder.decode(jsonObject.toString(), ENC));

            jsonObject.put("type", "error");
            syslog.error(URLDecoder.decode(jsonObject.toString(), ENC));

            jsonObject.put("type", "warn");
            syslog.warn(URLDecoder.decode(jsonObject.toString(), ENC));
        } catch (Exception e) {
            System.out.println("send exception " + e.getMessage());
        }
    }
        /* syslog.log——发送信息到服务器,数字表示日志级别 范围为0~7的数字编码,表示了事件的严重程度。0最高,7最低
        * syslog为每个事件赋予几个不同的优先级:
        0 LOG_EMERG:紧急情况,需要立即通知技术人员。
        1 LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失。
        2 LOG_CRIT:重要情况,如硬盘错误,备用连接丢失。
        3 LOG_ERR:错误,不是非常紧急,在一定时间内修复即可。
        4 LOG_WARNING:警告信息,不是错误,比如系统磁盘使用了85%等。
        5 LOG_NOTICE:不是错误情况,也不需要立即处理。
        6 LOG_INFO:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。
        7 LOG_DEBUG:包含详细的开发情报的信息,通常只在调试一个程序时使用。
        */

}

执行完成后,在server端查看效果,server端需打开UDP 514端口,若无其他额外配置(例如模板等),日志将会直接打印到/var/log/messages中。

[root@localhost ~]# tail -f /var/log/messages
Message from syslogd@zyyddat Jul 15 01:40:36 ...
 {"traceId":"1626338437509","level":0,"time":"Jul 15 16:40:37 ","message":"这是一条测试日志"}
Jul 15 16:40:37 zyydd {"traceId": "1626338437509","level":0,"time":"Jul 15 16:40:37 ","message":"这是一条测试日志"}
Jul 15 16:40:37 zyydd {"traceId": "1626338437509","level":1,"time":"Jul 15 16:40:37 ","message":"这是一条测试日志"}
Jul 15 16:40:37 zyydd {"traceId": "1626338437509","time":"Jul 15 16:40:37 ","message":"这是一条测试日志","type":"info"}
Jul 15 16:40:37 zyydd {"traceId": "1626338437509","time":"Jul 15 16:40:37 ","message":"这是一条测试日志","type":"error"}
Jul 15 16:40:37 zyydd {"traceId": "1626338437509","time":"Jul 15 16:40:37 ","message":"这是一条测试日志","type":"warn"}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值