`
peterwanghao
  • 浏览: 128458 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Syslog4j如何实现接收日志

 
阅读更多

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-0.9.46.zip

    syslog4j是一款Java库,专门用于处理syslog(系统日志)协议的发送与接收。syslog协议是一种广泛应用于网络设备、操作系统和应用程序的日志记录标准,它允许系统管理员集中收集和分析来自不同源的日志信息。syslog4j...

    syslog syslog4j syslogd linuxsyslog4j

    在实际应用中,开发者会集成syslog4j到他们的Java项目中,以便利用syslog协议发送和接收日志信息,从而实现日志的集中管理和分析。 总的来说,syslog、syslog4j、syslogd和Linux syslog构成了一个强大的日志管理...

    syslog4j-0.9.46.jar (解决消息内容发送不完整问题)

    在使用syslog4j时,确保正确配置目标syslog服务器地址、端口和协议,以实现最佳的日志传递效果。同时,合理设置日志级别,平衡信息的详尽度和存储空间的需求,是使用syslog4j时需要考虑的重要因素。

    java发送syslog日志,支持多目的ip

    因此,我们需要第三方库如`syslog4j`或`logback`的扩展来实现Syslog日志发送。 1. **syslog4j** 库:syslog4j是Java的一个开源库,专门用于发送和接收Syslog消息。使用syslog4j,我们可以创建一个`SyslogIF`实例,...

    syslog4j-0.946.jar

    Syslog4j库正是利用这种协议,使得Java应用程序可以方便地接入到Syslog日志系统中,无论是作为服务器接收日志,还是作为客户端发送日志。 Syslog4j提供了丰富的功能,包括: 1. **多协议支持**:除了标准的UDP和...

    syslog协议发送日志(java)

    在Java环境中实现syslog协议发送日志,我们可以利用相关的库或者自定义编程来完成。本文将深入探讨syslog协议的基本概念,如何在Java中实现syslog日志发送,以及与`syslogd`服务的关联。 首先,理解syslog协议。...

    log4j集成syslog配置说明

    log4j.appender.syslog.SyslogHost=接收日志的主机IP log4j.appender.syslog.Facility=local6 log4j.appender.syslog.Threshold=INFO log4j.appender.syslog.header=true log4j.appender.syslog.layout=org.apache....

    Log4j输出日志到syslog

    综上所述,Log4j输出日志到syslog是一个涉及日志框架配置、syslog协议理解和服务器设置的过程,它可以帮助我们实现日志的集中管理和监控,尤其是在大型分布式系统中。通过学习和实践这一过程,我们可以提升系统的可...

    发送基于TCP,UDP协议的syslog日志的库

    在syslog4j源代码的基础上进行了裁减和修改,修改了几个参数,可以发数据长度81920的日志,原设计中发送syslog时将日志交给线程发送,不能捕捉发送...原syslog4j实现了一个简单的接收syslog 的server,本版本中未包含

    linux cacti syslog-ng snare实现日志集中管理

    - **在日志服务器上放行 514 端口**:因为 syslog-ng 默认使用 UDP 514 端口接收日志数据,所以需要在防火墙中开放该端口。 1. **配置命令**:使用 iptables 或 firewall-cmd 命令来添加防火墙规则,允许外部访问 ...

    实现syslog

    如果需要更高级的功能,如TCP连接、SSL加密或者自定义格式,你可能需要寻找第三方库,如`logback-syslog4j`或`syslog4j`。这些库提供了更多选项,比如设置日志消息的格式、选择传输协议(UDP、TCP或SSL/TLS)等。 ...

    syslog4j-graylog2:Graylog2的syslog4j分支。 从0.10.0开始使用。 原始代码非常“特殊”,没有采取任何措施对其进行改进。 计划在将来的版本中完全替换它

    Syslog4j提供了BSD Syslog协议(RFC 3164)和“结构化syslog”协议草案(RFC Draft)的客户端和服务器实现。 警告 这是使用的重新打包的fork,因为原始软件包没有发布到Maven Central的最新版本。 已应用一些修改...

    syslog-server.zip

    1. 添加依赖:首先,我们需要在SpringBoot项目的`pom.xml`文件中添加相应的库依赖,例如`logback syslog4j`,这将提供Syslog日志的发送和接收功能。 2. 配置Syslog服务器:在`application.properties`或`...

    Collections源码java-Syslog2JMS:基于Java的Syslog服务器将收到的日志发布到JMS队列中。基于Syslog4j

    在Syslog2JMS项目中,开发人员利用Syslog4j接收来自网络的日志信息,然后通过JMS将这些日志消息发布到消息队列中。 Java Message Service (JMS) 是Java平台上的一个标准API,用于在分布式环境中发送、接收和存储...

    log4j的详细配置,log4j.xml和log4j.properties,日志输出到文件,邮件,数据库,控制台等

    总之,Log4j通过其灵活的配置,可以满足不同场景下的日志需求,无论是简单地输出到控制台,还是复杂地发送邮件或存入数据库,都能轻松实现。对于开发和运维人员来说,理解和掌握Log4j的配置方法是十分重要的,它能极...

    java日志操作之Log4j

    - **概念**:Logger是日志系统的入口,它负责接收日志请求并将其转发给适当的Appender。 - **使用方式**:开发者通过创建Logger实例并调用其提供的方法来记录日志。例如,可以使用`Logger.getLogger("com.example"...

    syslogger:将系统日志消息转发到Kafka

    通过向Kafka同步发送消息来实现可靠性(在仅使用TCP的情况下尽可能多):如果在将消息转发到Kafka时出现问题或延迟,我们将对Rsyslog施加尽可能多的背压。 默认情况下,Syslogger在端口1514上启动一个TCP侦听器。...

    Linux下面日志代码

    - **log4cpp**:基于log4j的C++实现,提供灵活的日志配置和多输出目标(如文件、控制台、网络)。 - **spdlog**:快速、现代的C++11日志库,具有良好的性能和易用性。 4. **使用脚本处理日志** - **bash脚本**:...

    log4j在ssh架构下的配置使用.docx

    1. **Logger**: 作为日志处理的核心,Logger 接收日志请求并决定是否应记录该请求。根据预设的级别,它将日志信息传递给适当的Appender。 2. **Appender**: Appender 负责将日志信息输出到特定的目标,如控制台、...

Global site tag (gtag.js) - Google Analytics