什么是SysLog
syslog协议属于一种主从式协议:syslog发送端会传送出一个小的文字讯息(小于1024字节)到syslog接收端。接收端通常名为“syslogd”、“syslog daemon”或syslog服务器。系统日志讯息可以被以UDP协议及╱或TCP协议来传送。
Syslog 常被称为系统日志或系统记录,是一种用来在互联网协议(TCP/IP)的网络中传递记录档讯息的标准。这个词汇常用来指实际的syslog 协议,或者那些送出syslog讯息的应用程式或数据库。
通俗一点的讲,syslog就是日志发送和接受的一种协议,你可以使用syslog协议实现自己的应用,将日志通过syslog协议从日志生产者发送到日志消费者,消费者保存日志信息,提供日志查询和管理。
为什么要使用syslog
如果一个企业部署了很多系统,每个系统都有自己的日志模块,每个系统都是独立的。那么管理员要想通过日志获取到系统的运行信息或者审计日志,那么工作量是相当大的。这个时候,只有要求所有的系统都将日志传输到syslog服务器上,通过syslog服务器统一管理日志,就会方便很多。当然这些系统包括所有的硬件,软件系统,他们都会源源不断的发来信息,由syslog服务器将信息分类,分级别记录。
如何连接开发SysLog应用
java开发syslog,一般都是开发客户端,服务器都是使用的第三方应用。它们已经给我们做好了syslog收集日志的部分,我们只需要安装就可以了。
开发前准备工作:
安装一个syslog服务器:syslogwatcher 下载地址:http://pan.baidu.com/s/1dDlEEvJ
可以通过Listen和Stop控制是否开启监听,通过Setting-Network来设置监听的UDP和TCP协议的端口
第一次使用的时候,需要设置编码为utf-8。这样兼容中文日志。
这样就开启了服务端,下面编写客户端程序:
java客户端开发需要引入:syslog4j.jar包。 下载地址:http://pan.baidu.com/s/1qW6qYo0
测试代码如下:
import java.net.URLDecoder;
import org.productivity.java.syslog4j.Syslog;
import org.productivity.java.syslog4j.SyslogIF;
public class test {
public static void main(String[] args) {
try {
// 使用udp协议。
SyslogIF syslog = Syslog.getInstance("udp");
// 设置syslog服务器端地址
syslog.getConfig().setHost("127.0.0.1");
// 设置syslog接收端口,默认514
syslog.getConfig().setPort(514);
// LEVEL_EMERGENCY = 0,LEVEL_ALERT = 1,LEVEL_CRITICAL = 2,LEVEL_ERROR = 3
// LEVEL_WARN = 4,LEVEL_NOTICE = 5,LEVEL_INFO = 6,LEVEL_DEBUG = 7
syslog.log(6, URLDecoder.decode("test log_info", "utf-8"));
syslog.log(syslog.LEVEL_INFO, URLDecoder.decode("test log_info", "utf-8"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
测试结果: