Syslog服务
Syslog 概述
syslog 常被称为系统日志或系统记录,系统日志通过 syslog 进程记录系统的有关事件,也可以记录应用程序运作事件。通过适当配置,甚至可以实现运行 syslog 协议的机器之间的通信。
早期的 syslog 日志服务对应的是 syslogd 守护进程,而目前很多 linux 发行版本已经使用 rsyslog 服务替换了 syslog 服务预装在 linux 系统中了,相应的守护进程就变成了rsyslogd(ubuntu 18中已经更新为 rsyslog)。
syslog 协议标准
syslog 协议是一种用来在互联网协议(TCP/IP)的网络中传递记录档讯息的标准,属于一种主从式协议:syslog 发送端
syslog API
linux C 中提供了一套系统日志写入的接口—syslog 库,syslog 库可以将应用程序中的日志消息写入日志系统,主要涉及三个函数 openlog,syslog,closelog。
发送一条文
syslog 日志文件
日志文件介绍
日志一般都在 /var/log
目录下。该目录下有以下几个重要的的日志文件。
/var/log/maillog
:记录邮件的往来信息,其实主要是记录 sendmail 与 dovecot 所产生的信息。/var/log/dmesg
:记录开机开始到现在的内核检测过程所产生的各项信息。如果内核编程的模块中使用printk(),将会把相关信息打印到这里。/var/log/messages
:系统发生的重要信息或者是错误信息都会记录在这个文件中,如果系统发生错误,这个文件就是需要查阅的文件之一。/var/log/httpd
:这个文件里面主要记录各种网络服务信息。/var/log/cron
:这个日志跟例行工作调度有关。即crontab有没有被执行,执行过程中有没有发生错误,在这个日子中均有体现。
上述的这些日志都是系统进程打印出的 log 日志。我们怎么能打印出自己的 log 日志呢?首先,我们要分清楚需求是什么,是通过内核打印出来?还是非内核应用中打印出来?
1、内核打印日志
相信很多使用过内核模块的朋友已经很清楚,在 linux 内核模块中编程的话,使用简单的 printk("helloworld");
就能达到打印日志的效果。在linux中使用 dmesg 命令即可查看内核输出的日志。
2、非内核编程打印日志
若想在非内核的环境下打印日志,就必须要使用 syslog(或者 rsyslog) 了。若你的系统还是使用的 syslog,
字信息到 syslog 接收端。
日志配置
如果需要修改系统日志配置,修改以下两个文件。
1)/etc/rsyslog.conf
2)/etc/rsyslog.d/50-default.conf:日志文件的记录规则和路径
rsyslogd 进程的操作:
sudo service rsyslog restart
sudo service rsyslog stop
sudo service rsyslog start
产生本地日志
1、修改 /etc/rsyslog.d/50-default.conf
配置文件:
在文件最后添加如下一行:
local0—local7 均可。
/var/log/mylocal.log 是自己定义的日志文件。
表示所有的日志,可以保存部分日志,例如 local0.info 只会保留 LOG_INFO 级别的日志。
2、配置完需要重启 rsyslogd 程序
/etc/init.d/rsyslog restart
# 或者
sudo service rsyslog restart
# 或者
systemctl restart rsyslog
3、程序中用以下记入日志
openlog("syslog_test", LOG_PID, LOG_LOCAL0);
程序编译运行后,log 信息将被记录到 mylocal。
4、动态查看日志
tail -f /var/log/mylocal.log | grep syslog_test
CentOS7搭建syslog日志服务器
1、安装rsyslog软件
yum install -y rsyslog
2、配置rsyslog.conf文件
vi /etc/rsyslog.conf
修改内容,注释打开,启用UDP、TCP协议,监听514端口
3、重启rsyslog服务,查看日志
systemctl restart rsyslog