Syslog4j如何实现接收日志
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<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 -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。其继承关系如下

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

创建好协议处理类后会注册到SyslogServer的实体池中供使用。
当需要将日志数据写到本地文件时,需要创建一个事件处理器来实现写日志。事件处理器保存到协议处理类的配置项中。
if(options.fileName != null) {
SyslogServerEventHandlerIF eventHandler = newFileSyslogServerEventHandler(options.fileName,options.append);
syslogServerConfig.addEventHandler(eventHandler);
}
事件处理器的作用是对日志内容如何处理比如写到文件中或是输出到屏幕上。事件类SyslogServerEventIF是对接收到的数据进行解析。
以UDP协议为例,Syslog4j处理流程如下:

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文件中看到结果了。
参考原文:http://blog.csdn.net/peterwanghao/article/details/6958580
Syslog4j如何实现接收日志的更多相关文章
- Keepalived指定文件接收日志
keepalived默认日志接收文件为/var/log/messages不方便查看,可以指定文件接收日志 修改配置文件/etc/sysconfig/keepalived KEEPALIVED_OPTI ...
- rsyslog 日志服务器接收日志权限问题
rsyslog 权限: 默认 [root@dr-mysql01 zjzc_log]# ls -ltr zj-frontend0*-access*27 -rw------- 1 root root 32 ...
- 配置Linux接收H3C路由器日志
(1)H3C Device上的配置 # 开启信息中心. <Sysname> system-view [Sysname] info-center enable # 配置发送日志信息到IP地 ...
- Logstash实践: 分布式系统的日志监控
文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...
- [翻译]Java日志终极指南
本文由 ImportNew - Wing 翻译自 loggly.欢迎加入翻译小组.转载请见文末要求. Java日志基础 Java使用了一种自定义的.可扩展的方法来输出日志.虽然Java通过java.u ...
- 用Linux自带的Logrotate来管理日志
Logrotate是由cron控制,cron在规定的时间执行 " logrotate /etc/logrotate.conf "命令.将对象日志进行转储,删除,压缩等操作... ...
- syslog-ng日志系统
一.基础syslog-ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能.系统自带版本(我的是红旗,不同系统用不同的方式查询): 引用 # rpm - ...
- Java日志系统框架的设计与实现
推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...
- Magicodes.WeiChat——利用纷纭打造云日志频道
纷纭,是个免费的渠道集成工具.这里我就不多介绍了,右侧是飞机票:https://lesschat.com/ 在开发或者在运维情况下,我们经常需要查看并关注服务器端日志以确保程序是否健康运行.尤其是在微 ...
随机推荐
- CodeForces 617C Watering Flowers
无脑暴力题,算出所有点到圆心p1的距离的平方,从小到大排序. 然后暴力枚举p1的半径的平方,计算剩余点中到p2的最大距离的平方,枚举过程中记录答案 #include<cstdio> #in ...
- sersync 实时同步文件
sersync 主要用于服务器同步,web镜像等功能.sersync是使用c++编写,在结合rsync同步的时候,节省了运行时耗和网络资源.因此更快.sersync配置起来很简单.另外本项目相比较其他 ...
- SDOI2016 R1 解题报告 bzoj4513~bzoj4518
储能表 将n, m分解为二进制,考虑一个log(n)层的trie树,n会在这颗trie树上走出了一个路径,因为 行数 $ \le n$,所以在n的二进制路径上,每次往1走的时候,与m计算贡献,m同样处 ...
- RunLoop基础
序言 RunLoop一直是比较高级而又比较神秘的技术,一直以来都没有深入去阅读过苹果给出的官方文档.本篇文章就讲讲苹果官方文档中所介绍的RunLoop,再加上其开源性,让我们一起深入去研究其特性及与线 ...
- kafka第四篇--快速入门(如何使用kafka)
Quick Start Step 1: Download the code Download the 0.8 release. > tar xzf kafka-<VERSION>.t ...
- Redis详细介绍
转自:http://blog.csdn.net/eroswang/article/details/7080412 1.介绍 1.1 Redis是什么 REmote DIctionary Server( ...
- FZU 1062 洗牌问题
首先有一个规律:当一个数字归位的时候,所有数字都会归位. 因此只需要模拟一个数字就可以了. #include<cstdio> #include<cstring> #includ ...
- CSS 弹性盒子布局
学习地址:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout
- X-008 FriendlyARM tiny4412 uboot移植之copy u-boot到DDR内存
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- Core Data 应用程序实践指南(Core Data 应用程序实践指南)
译者序 前言 勘误 1. 初次尝试Core Data应用程序 本书的基础,基本概念,能做什么,不能做什么.实现CoreDataHelper类,演示如何将Core Data同既有的应用程序相集成. 2. ...