系统概述:
通过封装SysLog日志工具来减少调用Syslog.getInstance() 生成SyslogIF实例的重复性代码。
系统总体结构:
SysLogUtil为单例模式,同时只向一个host发送日志若需向多个host发日志,new SysLogToolImpl实例即可。
SysLogTool功能:
a)功能启/停用
b)参数配置,包括使用协议、服务器地址、服务器端口、字符编码
预置数据
参数 | key | value |
---|---|---|
是否启用 | syslog_enable | false |
使用协议 | syslog_protocol | udp |
服务器地址 | syslog _host | 127.0.0.1 |
服务器端口 | syslog _port | 514 |
字符编码 | syslog _charset | utf8 |
API接口
public interface SysLogTool
{
public static final String PROTOCOL_UDP = SyslogConfigIF.UDP;
public static final String PROTOCOL_TCP = SyslogConfigIF.TCP;
public static final String PROTOCOL_UNIX_SYSLOG = SyslogConfigIF.UNIX_SYSLOG;
public static final String DEFAULT_PROTOCOL = PROTOCOL_UDP;
public static final String DEFAULT_CHARSET = "utf8";
public static final int DEFAULT_PORT = 514;
public static final String DEFAULT_HOST = "127.0.0.1";
public static final int DEFAULT_FACILITY = SyslogConfigIF.FACILITY_USER;
/**
* 使用默认参数初始化SysLog工具
* (协议:udp,主机地址:127.0.0.1,端口号:514,字符集:utf-8,设施:用户)
*/
public void init();
/**
* 初始化SysLog工具,设施类型使用默认值-用户
* @param protocol 使用协议
* @param host 主机地址
* @param port 端口号
* @param charset 字符集
*/
public void init(String protocol, String host, int port, String charset);
/**
* 初始化SysLog工具
* @param protocol 使用协议
* @param host 主机地址
* @param port 端口号
* @param charset 字符集
* @param facility 设施类型
*/
public void init(String protocol, String host, int port, String charset,
int facility);
/**
* 销毁 SysLog工具
*/
public void destroy();
/**
* 发送日志消息
* @param level 消息等级
* @param content 消息内容
*/
public void log(int level, final String content);
/**
* 获取使用协议
* @return 使用协议
*/
public String getProtocol();
/**
* 获取主机地址
* @return 主机地址
*/
public String getHost();
/**
* 获取端口
* @return 端口
*/
public int getPort();
/**
* 获取使用字符集
* @return 字符集
*/
public String getCharset();
/**
* 获取发送设施类型
* @return 设施类型
*/
public int getFacility();
}
测试代码如下:
import cn.com.xxx.syslog.SysLogUtil;
import cn.com.xxx.syslog.impl.SysLogToolImpl;
public class test {
public static void main(String[] args) {
SysLogToolImpl impl = new SysLogToolImpl();
impl.init("udp", "127.0.0.1", 514, "utf8");
impl.log(SysLogTool.error, "error");
impl.destroy();
SysLogUtil.init("udp", "172.20.10.1", 514, "utf8");
SysLogUtil.info("info");
SysLogUtil.destroy();
SysLogToolImpl impl2 = new SysLogToolImpl();
impl2.init("udp", "localhost", 514, "utf8");
impl2.log(SysLogTool.warn, "warn");
impl2.destroy();
}
}
测试结果:
完整实现代码见github:https://github.com/CheerForU/SysLogTool