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如何实现接收日志的更多相关文章

  1. Keepalived指定文件接收日志

    keepalived默认日志接收文件为/var/log/messages不方便查看,可以指定文件接收日志 修改配置文件/etc/sysconfig/keepalived KEEPALIVED_OPTI ...

  2. rsyslog 日志服务器接收日志权限问题

    rsyslog 权限: 默认 [root@dr-mysql01 zjzc_log]# ls -ltr zj-frontend0*-access*27 -rw------- 1 root root 32 ...

  3. 配置Linux接收H3C路由器日志

    (1)H3C  Device上的配置 # 开启信息中心. <Sysname> system-view [Sysname] info-center enable # 配置发送日志信息到IP地 ...

  4. Logstash实践: 分布式系统的日志监控

    文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...

  5. [翻译]Java日志终极指南

    本文由 ImportNew - Wing 翻译自 loggly.欢迎加入翻译小组.转载请见文末要求. Java日志基础 Java使用了一种自定义的.可扩展的方法来输出日志.虽然Java通过java.u ...

  6. 用Linux自带的Logrotate来管理日志

    Logrotate是由cron控制,cron在规定的时间执行 " logrotate  /etc/logrotate.conf "命令.将对象日志进行转储,删除,压缩等操作... ...

  7. syslog-ng日志系统

    一.基础syslog-ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能.系统自带版本(我的是红旗,不同系统用不同的方式查询): 引用 # rpm - ...

  8. Java日志系统框架的设计与实现

    推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...

  9. Magicodes.WeiChat——利用纷纭打造云日志频道

    纷纭,是个免费的渠道集成工具.这里我就不多介绍了,右侧是飞机票:https://lesschat.com/ 在开发或者在运维情况下,我们经常需要查看并关注服务器端日志以确保程序是否健康运行.尤其是在微 ...

随机推荐

  1. Blog`s CSS

    #div_digg { position: fixed; bottom: 10px; width: 50px; right: 50px; filter: alpha(opacity=20); opac ...

  2. 6、手把手教你Extjs5(六)继承自定义一个控件

    Extjs的开发都可以遵循OOP的原则,其对类的封装也很完善了.自定义一个控件最简单的办法就是继承一个已有的控件.根据上一节的需要,我做了一个Button的子类.首先根据目录结构,在app目录下建立一 ...

  3. OSD的主要实现方法和类型(转)

    源:OSD的主要实现方法和类型 目前有两种主要的OSD实现方法:外部OSD发生器与视频处理器间的叠加合成;视频处理器内部 支持OSD,直接在视频缓存内部叠加OSD信息. 外部OSD发生器与视频处理器间 ...

  4. mysql root密码

    方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:my ...

  5. iOS开发实现Label中多颜色多字体

     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(8, 100, 300, 30)]; label.textColor = wor ...

  6. iOS中UITextField 使用全面解析

    //初始化textfield并设置位置及大小   UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 13 ...

  7. iOS开发UITableView基本使用方法总结

    本文为大家呈现了iOS开发中UITableView基本使用方法总结.首先,Controller需要实现两个delegate ,分别是UITableViewDelegate 和UITableViewDa ...

  8. svn 安装网站

    1.svn插件 http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240

  9. 分布式事务 & 两阶段提交 & 三阶段提交

    可以参考这篇文章: http://blog.csdn.net/whycold/article/details/47702133 两阶段提交保证了分布式事务的原子性,这些子事务要么都做,要么都不做. 而 ...

  10. UVa 10684 - The jackpot

    题目大意:给一个序列,求最大连续和. 用sum[i]表示前i个元素之和,那么以第i个元素结尾的最大连续和就是sum[i]-sum[j] (j<i)的最大值,也就是找前i-1个位置sum[]的最小 ...