目录结构
- 前言
- Windows下安装syslog服务端(Syslog Watcher Manager)
- Linux下syslog服务端搭建
- java同步日志代码块
- 日志同步测试
前言
系统同步日志到syslog服务器,此文章记录以下内容:
- Windows下syslog服务端(Syslog Watcher Manager)搭建安装及配置方式 ;
- Linux下syslog服务端的搭建方式
- java代码实现日志同步到syslog服务端
- 代码及syslog服务端测试
Windows下安装syslog服务端(Syslog Watcher Manager)
- Syslog Watcher官网,下载Syslog Watcher安装包
- 傻瓜式安装即可
- 安装完成添加相应的协议,小编应用的是UDP和TCP,端口和IP按需调整即可
Linux下syslog服务端搭建
java同步日志代码块
- 引入maven依赖
syslog4j使用版本需要注意,此处使用的是0.9.46,最开始使用的是0.9.30,但测试过程中,日志同步到Syslog Watcher中,日志显示不完整,更新版本后日志显示正常(建议使用最新版本)
<dependency>
<groupId>org.syslog4j</groupId>
<artifactId>syslog4j</artifactId>
<version>0.9.46</version>
</dependency>
- java代码块
level参数,代表日志的级别
范围为0~7的数字编码,表示了事件的严重程度。0最高,7最低
syslog为每个事件赋予几个不同的优先级:
LOG_EMERG:紧急情况,需要立即通知技术人员。
LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失。
LOG_CRIT:重要情况,如硬盘错误,备用连接丢失。
LOG_ERR:错误,不是非常紧急,在一定时间内修复即可。
LOG_WARNING:警告信息,不是错误,比如系统磁盘使用了85%等。
LOG_NOTICE:不是错误情况,也不需要立即处理。
LOG_INFO:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。
LOG_DEBUG:包含详细的开发情报的信息,通常只在调试一个程序时使用
package com.zhongkeyinruan.util;
import com.alibaba.fastjson.JSONObject;
import org.productivity.java.syslog4j.Syslog;
import org.productivity.java.syslog4j.SyslogIF;
import java.net.URLDecoder;
import java.util.Date;
public class Jkx {
public static void main(String[] args) {
String msg = "IP:127.0.0.1,账号:稻草人,编辑组织架构信息成功!";
JSONObject jsonObject = new JSONObject();
jsonObject.put("time", DateUtil.dateToStr(new Date(), 4));
jsonObject.put("msg", msg);
// 此日志信息仅供测试,日志格式请按需调整
sendSyslogInfo(jsonObject.toString(), 6);
}
/**
* @description: 日志同步至syslog服务器
* level参数,代表日志的级别
* 范围为0~7的数字编码,表示了事件的严重程度。0最高,7最低
* syslog为每个事件赋予几个不同的优先级:
* LOG_EMERG:紧急情况,需要立即通知技术人员。
* LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失。
* LOG_CRIT:重要情况,如硬盘错误,备用连接丢失。
* LOG_ERR:错误,不是非常紧急,在一定时间内修复即可。
* LOG_WARNING:警告信息,不是错误,比如系统磁盘使用了85%等。
* LOG_NOTICE:不是错误情况,也不需要立即处理。
* LOG_INFO:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。
* LOG_DEBUG:包含详细的开发情报的信息,通常只在调试一个程序时使用。
* @author: Mr.Jkx
* @time: 2023/2/16 14:26
*/
public static void sendSyslogInfo(String msg, int level) {
try {
String syslogIp = "127.0.0.1";
// 端口默认514
int syslogPort = 514;
//获取syslog的操作类,使用udp协议。
String syslogProtocol = "udp";
SyslogIF syslog = Syslog.getInstance(syslogProtocol);
//设置syslog服务器端地址
syslog.getConfig().setHost(syslogIp);
//设置syslog接收端口
syslog.getConfig().setPort(syslogPort);
// 同步日志到syslog服务端
syslog.log(level, URLDecoder.decode(msg, "UTF-8"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
日志同步测试
********* 此文章仅记录java程序同步日志到syslog服务端,关于syslog日志及Syslog Watcher软甲更加详尽的信息请查阅相关的资料 *********