java syslog4j_Syslog4j如何实现接收日志

本文介绍了如何使用Syslog4j库在Java中实现Syslog(RFC3164)协议的日志接收。内容包括Syslog4j的下载、服务端示例程序的运行、程序分析以及日志发送的示例代码。通过启动SyslogServerMain服务并在配置后,日志可以被接收并写入到本地文件。
摘要由CSDN通过智能技术生成

1、Syslog4j是一个实现Syslog(RFC3164)协议的Java开源类库包括客户端与服务器端。通过 UDP/IP, TCP/IP, TCP/IPover SSL/TLS, Unix Syslog, 和 Unix Socket 等协议进行日志记录。

2、下载地址 :http://syslog4j.org/   需要的jar包:syslog4j-0.9.46.jar

3、示例程序

Syslog4j本身自带了一个服务端的例子程序:SyslogServerMain。这是一个命令行方式的日志服务器的实现。

命令参数说明如下:

SyslogServer [-h] [-p ] [-o ] [-a] [-q]

-h     host or IP to bind

-p    port to bind

-t socket timeout (in milliseconds)

-o    file to write entries(overwrites by default)

-a           append to file (instead ofoverwrite)

-q           do not write anything to standardout

protocol     Syslog4j protocol implementation (tcp,udp, ...)

命令执行方法如下:

java -cp syslog4j-0.9.46.jar org.productivity.java.syslog4j.server.SyslogServerMain -p 5555 udp -o d:/workspace/syslog.log

代表的含义是使用本机的5555端口,通过UDP协议接收日志。

4、程序分析

Syslog4j服务端的入口为SyslogServer。在创建此类时会初始化两个SyslogServer实例:实现UDP协议的服务类(UDPNetSyslogServer)和实现TCP协议的服务类(TCPNetSyslogServer)。这两个具体的协议处理类都共有相同的接口SyslogServerIF。其继承关系如下

141959d7de7f85fb6eb4bc151374b63d.gif

在生成服务类实例时需要两个参数:协议名称和配置类。配置类定义了通讯协议中需要的一些配置项,比如:主机,端口,协议,是否写文件等等。配置类也根据不同的通讯协议分为UDP和TCP两种,共同实现相同的接口SyslogServerConfigIF。其继承关系如下:

40b99c6b927325deb66af338501deb75.gif

创建好协议处理类后会注册到SyslogServer的实体池中供使用。

当需要将日志数据写到本地文件时,需要创建一个事件处理器来实现写日志。事件处理器保存到协议处理类的配置项中。

if(options.fileName != null) {

SyslogServerEventHandlerIF eventHandler = newFileSyslogServerEventHandler(options.fileName,options.append);

syslogServerConfig.addEventHandler(eventHandler);

}

事件处理器的作用是对日志内容如何处理比如写到文件中或是输出到屏幕上。事件类SyslogServerEventIF是对接收到的数据进行解析。

以UDP协议为例,Syslog4j处理流程如下:

6db6cc7ad4e8fb4f20be7f524928abaa.gif

5.日志发送

接下来我们准备一个简单的日志发送端程序,如下:

public class Syslog4jDemo {

public static void main(String []args){

// Set a Specific Host, then Log to It

SyslogIF syslog = Syslog.getInstance("udp");

syslog.getConfig().setHost("localhost");

syslog.getConfig().setPort(5555);

syslog.info("Today is good day!");

}

}

首先我们按上面的方法启动接收端程序,然后运行这段发送代码,接下来就可以在指定的log文件中看到结果了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值