Syslog4j如何实现接收日志
来源:互联网 发布:赵薇事件始末 知乎截图 编辑:程序博客网 时间:2024/05/17 22:11
1、前言
Syslog4j是一个实现Syslog(RFC3164)协议的Java开源类库包括客户端与服务器端。通过 UDP/IP, TCP/IP, TCP/IPover SSL/TLS, Unix Syslog, 和 Unix Socket 等协议进行日志记录。
本文介绍了如何使用Syslog4j作为日志服务端接收Syslog日志。
2、需要的资源
下载地址 :http://syslog4j.org/
需要的jar包:syslog4j-0.9.46.jar
3、示例程序
Syslog4j本身自带了一个服务端的例子程序:SyslogServerMain。这是一个命令行方式的日志服务器的实现。
命令参数说明如下:
SyslogServer [-h<host>] [-p <port>] [-o <file>] [-a] [-q] <protocol>
-h <host> host or IP to bind
-p<port> port to bind
-t<timeout> socket timeout (in milliseconds)
-o<file> 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 -cpsyslog4j-0.9.46.jar org.productivity.java.syslog4j.server.SyslogServerMain -p5555 udp
代表的含义是使用本机的5555端口,通过UDP协议接收日志。
4、程序分析
Syslog4j服务端的入口为SyslogServer。在创建此类时会初始化两个SyslogServer实例:实现UDP协议的服务类(UDPNetSyslogServer)和实现TCP协议的服务类(TCPNetSyslogServer)。这两个具体的协议处理类都共有相同的接口SyslogServerIF。其继承关系如下:
在生成服务类实例时需要两个参数:协议名称和配置类。配置类定义了通讯协议中需要的一些配置项,比如:主机,端口,协议,是否写文件等等。配置类也根据不同的通讯协议分为UDP和TCP两种,共同实现相同的接口SyslogServerConfigIF。其继承关系如下:
创建好协议处理类后会注册到SyslogServer的实体池中供使用。
当需要将日志数据写到本地文件时,需要创建一个事件处理器来实现写日志。事件处理器保存到协议处理类的配置项中。
if(options.fileName != null) {
SyslogServerEventHandlerIF eventHandler = newFileSyslogServerEventHandler(options.fileName,options.append);
syslogServerConfig.addEventHandler(eventHandler);
}
事件处理器的作用是对日志内容如何处理比如写到文件中或是输出到屏幕上。事件类SyslogServerEventIF是对接收到的数据进行解析。
以UDP协议为例,Syslog4j处理流程如下:5、总结
Syslog4j实现了Syslog协议可以用来接收syslog日志。目前工程更新比较缓慢,可查阅的资料不多。但好在整体框架比较简单还是很好掌握的。如果做为syslog日志服务器的话在性能方面还需要检验,网上还没看到比较成熟的案例。- Syslog4j如何实现接收日志
- Syslog4j实现接收日志
- Syslog4j中的日志格式处理
- Syslog4j
- syslog4j发送消息和接收消息demo新
- 如何实现用户日志跟踪
- flume log4j日志接收
- Flume接收Log4j日志
- 如何使用JMAIL组件实现邮件的发送与接收
- UdpSocket如何实现通过代理接收多包数据
- STM32串口如何代码实现更高效的接收消息
- STM32串口如何代码实现更稳定的接收消息
- Socket编程如何实现服务器端接收客户端数据
- STM32串口如何代码实现更稳定的接收消息
- STM32串口如何代码实现更稳定的接收消息
- 如何在 WebDriver 中实现日志记录
- ThinkPHP3.2.3如何实现系统登录日志
- ThinkPHP3.2.3如何实现系统登录日志?
- 解惑:学.Net还是学Java?
- 如今还有人在憎恨比尔盖茨吗?
- TCL/TK 与 C 程序的集成
- 人生,也需要常回头看看
- IT人也经常读错的词
- Syslog4j如何实现接收日志
- webservice
- Tcl编程简介(一)
- glib库 socket通信相关的几个函数和数据结构 (二) 打开连接 发送 接收和关闭连接
- 用 Mingw gcc 编译 dll
- php写爬虫工具
- Tcl编程简介(二)
- Android应用程序打包签名
- Tcl编程简介(三)之内置命令集