欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

syslog命令

程序员文章站 2022-12-25 23:11:29
更多请关注 Linux命令大全 syslog 介绍 syslog是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。程序,守护进程和内核提供了访问系统的日志信息。因此,任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。 几乎所有的 ......

更多请关注 linux命令大全

syslog 介绍

syslog是linux系统默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。程序,守护进程和内核提供了访问系统的日志信息。因此,任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。 几乎所有的网络设备都可以通过syslog协议,将日志信息以用户数据报协议(udp)方式传送到远端服务器,远端接收日志服务器必须通过syslogd监听udp 端口514,并根据 syslog.conf配置文件中的配置处理本机,接收访问系统的日志信息,把指定的事件写入特定文件中,供后台数据库管理和响应之用。意味着可以让任何事件都登录到一台或多台服务器上,以备后台数据库用off-line(离线) 方法分析远端设备的事件。 通常,syslog 接受来自系统的各种功能的信息,每个信息都包括重要级。/etc/syslog.conf 文件通知 syslogd 如何根据设备和信息重要级别来报告信息。 

关于syslog协议介绍

在unix类操作系统上,syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。

完整的syslog日志中包含产生日志的程序模块(facility)、严重性(severity或 level)、时间、主机名或ip、进程名、进程id和正文。在unix类操作系统上,能够按facility和severity的组合来决定什么样的日志消息是否需要记录,记录到什么地方,是否需要发送到一个接收syslog的服务器等。由于syslog简单而灵活的特性,syslog不再仅限于 unix类主机的日志记录,任何需要记录和发送日志的场景,都可能会使用syslog。

长期以来,没有一个标准来规范syslog的格式,导致syslog的格式是非常随意的。最坏的情况下,根本就没有任何格式,导致程序不能对syslog 消息进行解析,只能将它看作是一个字符串。

在2001年定义的rfc3164中,不过这个规范的很多内容都不是强制性的,常常是“建议”或者“约定”,也由于这个规范出的比较晚,很多设备并不遵守或不完全遵守这个规范。接下来就介绍一 下这个规范。

约定发送syslog的设备为device,转发syslog的设备为relay,接收syslog的设备为collector。relay本身也可以发送自身的syslog给collector,这个时候它表现为一个device。relay也可以只转发部分接收到的syslog消息,这个时候它同时表现为relay和collector。

syslog消息发送到collector的udp 514端口,不需要接收方应答,rfc3164建议 device 也使用514作为源端口。规定syslog消息的udp报文不能超过1024字节,并且全部由可打印的字符组成。完整的syslog消息由3部分组成,分别是pri、header和msg。大部分syslog都包含pri和msg部分,而header可能没有。

syslog 使用方法

在/var/log中创建并写入日志信息是由syslog协议处理的,是由守护进程sylogd负责执行。每个标准的进程都可以用syslog记录日志。可以使用logger命令通过syslogd记录日志。 要向syslog文件/var/log/messages中记录日志信息:

logger this is a test log line 

输出: 
tail -n 1 messages 
jan 5 10:07:03 localhost root: this is a test log line

如果要记录特定的标记(tag)可以使用:

logger -t tag this is a test log line 
输出: 
tail -n 1 messages 
jan 5 10:37:14 localhost tag: this is a test log line