SysLog简介和java操作实例

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[-]

  1. 什么是SysLog
  2. SysLog的作用
  3. Java如何连接开发SysLog应用
    1. 安装一个syslog服务器syslogwatcher
    2. 可以通过Listen和Stop控制是否开启监听
    3. java客户端开发需要引入syslog4jjar包
    4. 服务器记录信息如图

这次为大家分享一项日志技术,syslog日志技术。微信公众分享号:lshaids6688

什么是SysLog

syslog协议属于一种主从式协议:syslog发送端会传送出一个小的文字讯息(小于1024字节)到syslog接收端。接收端通常名为“syslogd”、“syslog daemon”或syslog服务器。系统日志讯息可以被以UDP协议及╱或TCP协议来传送。这些资料是以明码型态被传送。不过由于SSL加密外套(例如Stunnel、sslio或sslwrap等)并非syslog协议本身的一部分,因此可以被用来透过SSL/TLS方式提供一层加密。
syslog通常被用于资讯系统管理及资安稽核。虽然它有不少缺陷,但仍获得相当多的装置及各种平台的接收端支援。因此syslog能被用来将来自许多不同类型系统的日志记录整合到集中的储存库中。
syslog提供了一个便于管理员理解日志的机制,即以英文文本来记录系统消息。系统日志消息中有标准格式的消息(称为系统日志消息、系统错误消息或简单系统消息),也有从调试命令输出的消息。这些消息是在网络运作过程中生成的,旨在指明网络问题的类型和严重程度,或者帮助读者用户检测路由器的活动,比如配置的变更。
Cisco设备会根据网络事件导致的结果,来生成系统日志消息。每个syslog消息中都包含一个严重级别和一个特性。很多网络设备都支持syslog其中包括路由器、交换机、应用服务器、防火墙和其他网络设备。
Syslog 常被称为系统日志或系统记录,是一种用来在互联网协议(TCP/IP)的网络中传递记录档讯息的标准。这个词汇常用来指实际的syslog 协议,或者那些送出syslog讯息的应用程式或数据库。

通俗一点的讲,syslog就是日志发送和接受的一种协议,你可以使用syslog协议实现自己的应用,将日志通过syslog协议从日志生产者发送到日志消费者,消费者保存日志信息,提供日志查询和管理。

SysLog的作用

首先和大家解释一下,为什么要使用syslog。或许大家有这样的疑问,我们平时做的每一个系统不都有自己的日志模块吗?我们登录自己的日志模块,可以很方便的查看自己的日志信息。那么为什么还要使用syslog呢?

答案是这样的,如果只是针对一个系统,我们一般是没有必要使用syslog的,如果一个企业部署了很多系统,每个系统都有自己的日志模块,每个系统都是独立的。那么管理员要想通过日志获取到系统的运行信息或者审计日志,那么工作量是相当大的。这个时候,只有要求所有的系统都将日志传输到syslog服务器上,通过syslog服务器统一管理日志,就会方便很多。

当然这些系统包括所有的硬件,软件系统,他们都会源源不断的发来信息,由syslog服务器将信息分类,分级别记录。

Java如何连接开发SysLog应用

java开发syslog,一般都是开发客户端,服务器都是使用的第三方应用。它们已经给我们做好了syslog收集日志的部分,我们只需要安装就可以了。

开发前准备工作:

安装一个syslog服务器:syslogwatcher

下载地址:http://pan.baidu.com/s/1dDlEEvJ

下载完成以后,直接运行exe就行。

启动以后,托盘中就会有一个图标,单击进入syslogwatcher。第一次使用的时候,需要设置编码为utf-8。这样兼容中文日志。

可以通过Listen和Stop控制是否开启监听

这样就开启了服务端,下面编写客户端程序:

java客户端开发需要引入:syslog4j.jar包。

下载地址:http://pan.baidu.com/s/1qW6qYo0

下载以后引入到项目中,编写代码实例如下:

[java] view plain copy

  1. import java.net.URLDecoder;
  2. import java.util.Date;
  3. import org.productivity.java.syslog4j.Syslog;
  4. import org.productivity.java.syslog4j.SyslogIF;
  5. /**
  6. * SysLog发送数据
  7. * @author lish
  8. * date 2014年8月1日 上午11:02:06
  9. * class name SyslogTest2
  10. */
  11. public class SyslogTest2 {
  12. public static void main(String[] args){
  13. try {
  14. //获取syslog的操作类,使用udp协议。syslog支持"udp", "tcp", "unix_syslog", "unix_socket"协议
  15. SyslogIF syslog = Syslog.getInstance("udp");
  16. //设置syslog服务器端地址
  17. syslog.getConfig().setHost("127.0.0.1");
  18. //设置syslog接收端口,默认514
  19. syslog.getConfig().setPort(514);
  20. //拼接syslog日志,这个日志是自己定义的,通常我们定义成符合公司规范的格式就行,方便查询。例如 操作时间:2014年8月1日  操作者ID:张三 等。信息就是一个字符串。
  21. StringBuffer buffer = new StringBuffer();
  22. buffer.append("操作时间:" + new Date().toString().substring(4, 20) + ";");
  23. buffer.append("操作者ID:" + "张三" + ";");
  24. buffer.append("操作时间:" + new Date()+ ";");
  25. buffer.append("日志类别:" + "22"+ ";");
  26. buffer.append("执行动作:" + "动作" + ";");
  27. buffer.append("备注:" + "备注");
  28. /*  发送信息到服务器,2表示日志级别 范围为0~7的数字编码,表示了事件的严重程度。0最高,7最低
  29. *  syslog为每个事件赋予几个不同的优先级:
  30. LOG_EMERG:紧急情况,需要立即通知技术人员。
  31. LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失。
  32. LOG_CRIT:重要情况,如硬盘错误,备用连接丢失。
  33. LOG_ERR:错误,不是非常紧急,在一定时间内修复即可。
  34. LOG_WARNING:警告信息,不是错误,比如系统磁盘使用了85%等。
  35. LOG_NOTICE:不是错误情况,也不需要立即处理。
  36. LOG_INFO:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。
  37. LOG_DEBUG:包含详细的开发情报的信息,通常只在调试一个程序时使用。
  38. */
  39. syslog.log(0, URLDecoder.decode(buffer.toString(),"utf-8"));
  40. } catch (Exception e) {
  41. }
  42. }
  43. }

服务器记录信息如图:

这样,只要要求所有的系统都向服务器发送日志信息,管理员就可以通过syslog服务器查询所有的日志信息。而且可以通过日志信息的级别来确定具体的应对措施。syslog服务器还可以制作一些报表,直观的查看日志信息

到这里,你就初步掌握了syslog的应用方法了,syslog还可以监控Linux,unix,window等服务器的日志信息,这样通过syslog还可以实时的得到服务器运行状况。如果有兴趣的还可以深入了解。总之,这么简单就能统一日志管理,何乐而不为呢?

时间: 2024-10-07 13:48:30

SysLog简介和java操作实例的相关文章

centos安装memcached和java操作实例

准备搭建memcached缓存集群.这里简单的记录一下搭建过程 由于memcached安装时,需要使用libevent类库,所以先安装libevent 下载地址http://www.monkey.org/~provos/libevent/ (一)我下载的是libevent-1.4.14b-stable.tar.gz 1|解压 tar zxvf libevent-1.4.14b-stable.tar.gz 2|进入文件 cd libevent-1.4.14b-stable 3.编译安装(默认安装到

java 操作实例

1.日期的加减操作 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateCalculate { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** *

memcached—Java操作Memcached实例

前面博客介绍了如何在Windows操作系统中安装Memcached,总结一下如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import jav

java 数组操作实例

对于任何编程语言,数组都是必须掌握的知识点,本文章向大家介绍java数组的一些操作实例.感兴趣的朋友可以参考一下. Java数组排序及元素查找 Java数组添加元素 Java获取数组长度 Java数组反转 Java数组输出 Java数组获取最大和最小值 Java数组合并 Java数组填充 Java数组扩容 Java数组排序及查找 Java删除数组元素 Java数组差集 Java数组交集 Java在数组中查找指定元素 Java判断数组是否相等 Java数组并集

java操作Hbase实例

所用HBase版本为1.1.2,hadoop版本为2.4 /* * 创建一个students表,并进行相关操作 */ import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apach

新浪微博数据解析与java操作Hbase实例

之前发过一篇开发新浪微博的文章,对于大家比较感兴趣的内容之一便是如何解析新浪微博的JSON. 其实一开始的时候,也遇过一些挫折,比如直接用JsonArray和JsonObject去解析JSON内容的话,是解析不了的. 因为JSON的格式比较固定,像新浪微博返回的JSON内容则是多了一个中括号及statues标签,如下: { "statuses": [ { "created_at": "Tue May 31 17:46:55 +0800 2011"

Java操作Redis的简单实例

Java操作Redis是必备学习的内容,那我直接上一个超级简单的案例给大家参考下! 一.创建RedisTest类,代码如下! import redis.clients.jedis.Jedis; public class RedisTest {     public static void main(String[] args) {         // TODO Auto-generated method stub         //连接redis服务         Jedis jedis 

java操作Excel

一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象.它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等. 二.HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”.也许HSSF的名字有点

Flex Socket与Java通信实例说明(转)

Flex Socket与Java通信实例说明(转) 这两天一直在flex的Socket ,现在终于懂了很多.由浅到深一步一步深入.慢慢体会实例,虽然实例都是在网上找的,但也经过了我的测试.我比较喜欢注释,也注释了很多. 跟着走你就会懂.. Flex端 和 Java端, 先运行Java端启动服务.然后在测试Flex. 实例一: Flex端: <?xml version="1.0" encoding="utf-8"?> <mx:TitleWindow