文前说明
作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。
本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。
Syslog 常被称为系统日志或系统记录,是一种用来在互联网协议(TCP/IP)的网络中传递记录档讯息的标准。syslog 协议属于一种主从式协议,系统日志讯息可以被以 UDP 协议或 TCP 协议来传送。
Syslog 服务搭建
搭建 Linux 系统 syslog 服务端。
- 修改 syslog 配置文件,设置接收来自外部的基于 UDP 或者 TCP 协议的日志消息。
vi /etc/rsyslog.conf
注意:CentOS6 以前的版本配置文件为 /etc/syslog.conf。
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
将 $ModLoad imudp 、$UDPServerRun 514 或者 $ModLoad imtcp 、$InputTCPServerRun 514 的注释标记去掉。
- 重启 syslog 服务。
service rsyslog restart
- 关闭防火墙或者打开 514 端口。
service iptables stop
搭建 Linux 系统 syslog 客户端。
- 修改 syslog 配置文件,设置日志上报服务端。
#*.* @@remote-host:514
去掉注释标记,修改 remote-host,为 syslog 服务端地址。
- 重启 syslog 服务。
service rsyslog restart
- 关闭防火墙或者打开 514 端口。
service iptables stop
调试 syslog 日志上报。
- 在服务端查看客户端上报的日志信息。
tail -f /var/log/message
Syslog 功能实现
- 工程中引入 syslog 第三方包。
<dependency>
<groupId>org.syslog4j</groupId>
<artifactId>syslog4j</artifactId>
<version>0.9.46</version>
</dependency>
- 实例化 syslog 服务对象,并且设置使用的协议。
private SyslogIF syslog;
syslog = Syslog.getInstance("TCP");
- 设置工程项目上报 syslog 服务端的地址和端口等配置信息。
syslog.getConfig().setHost(ip);
syslog.getConfig().setPort(port);
syslog.getConfig().setCharSet(encoding);
- 上报日志给服务端。
syslog.log(level, message);
Syslog 基本说明
- syslog 的消息格式
系统消息由一个百分号开始:%FACILITY-SUBFACILITY-SEVERITY-MNEMONIC:Message-text
名称 | 说明 | 备注 |
---|---|---|
Facility | 特性 | 由 2 个或 2 个以上大写字母组成的代码,用来表示硬件设备、协议或系统软件的型号。 |
Severity | 严重性 | 范围为 0~7 的数字编码,表示了事件的严重程度。 |
Mnemonic | 助记码 | 唯一标识出错误消息的代码。 |
Message-text | 消息文本 | 用于描述事件的文本串。消息中的这一部分有时会包含事件的细节信息,其中包括目的端口号、网络地址或系统内存地址空间中所对应的的地址。 |
- syslog 为每个事件赋予几个不同的优先级。
级别码 | 级别 | 说明 |
---|---|---|
0 | LOG_EMERG | 紧急情况,需要立即通知技术人员。 |
1 | LOG_ALERT | 应该被立即改正的问题,如系统数据库被破坏,ISP 连接丢失。 |
2 | LOG_CRIT | 重要情况,如硬盘错误,备用连接丢失。 |
3 | LOG_ERR | 错误,不是非常紧急,在一定时间内修复即可。 |
4 | LOG_WARNING | 警告信息,不是错误,比如系统磁盘使用了 85% 等。 |
5 | LOG_NOTICE | 不是错误情况,也不需要立即处理。 |
6 | LOG_INFO | 情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。 |
7 | LOG_DEBUG | 包含详细的开发情报的信息,通常只在调试一个程序时使用。 |
网友评论