1. 前言

syslog是UNIX系统中提供的一种日志记录方法(RFC3164),syslog本身是一个服务器,程序中凡是使用syslog记录的信息都会发送到该服务器,服务器根据配置决定此信息是否记录,是记录到磁盘文件还是其他地方,这样使系统内所有应用程序都能以统一的方式记录日志,为系统日志的统一审计提供了方便。
2. 日志格式
syslog记录的日志格式为:
月 日 时:分:秒 主机名 标志 日志内容
3. syslog编程
为记录日志,通常用到3个函数,openlog(3),syslog(3)和closelog(3),openlog(3)和closelog(3)不是必须的,没有openlog(3)的话将用系统缺省的方式记录日志。
#include <syslog.h>
void openlog( char *ident, int option, int  facility)
void syslog( int priority, char *format, ...)
void closelog( void )
openlog(3)有三个参数,第一个参数是标志字符串,也就是日志中的第5个字段,不设的话缺省取程序名称;
第二个参数是选项,是下面一些标志位的组合:
       LOG_CONS:日志信息在写给日志服务器的同时打印到终端
       LOG_NDELAY:立即记录日志
       LOG_PERROR:把日志信息也输出到标准错误流
       LOG_PID:在标志字段中记录进程的PID值
第三个参数是说明日志类型的,定义了以下类型:

  
syslog(3)函数主要的是第一个参数priority,后面那些参数就是和printf(3)函数用法一样了,priority值表示该条日志的级别,日志级别分8级,由高到低的顺序为:
  
如果openlog(3)时没有指定facility,是可以把facility的值或到priority中的,如(LOG_AUTH | LOG_INFO),已经设置了就可以不用或了。
closelog(3)这个没啥好说的了,关闭日志记录。

4. syslog服务器配置
syslog服务器的配置文件为/etc/syslog.conf,syslog(3)函数把想记录的日志信息都发送给日志服务器,但此日志最终是否记录到文件或发送给远程服务器,则是由此配置文件来决定的,该配置文件就是告诉日志服务器要记录那些类型和级别的日志,如何记录等信息。
配置文件是文本文件,每行配置分两个字段,第一字段是说明要记录哪类日志,第二字段是说明日志存放位置,可以是本地文件,也可以是远程服务器。
第一字段:
第一字段基本格式是“facility.priority”,可以同时定义多个,中间用逗号“,”或分号“;”分隔。
facility名称就是上面说的facility值的后半部的小写,如news, mail,kern, cron等,也可以用“*”表示所有facility类型;
priority名称就是上面说的priority值的后半部的小写,如emerg, alert,err, info等,也可以用“*”表示所有priority类型,比此级别高的日志都会自动记录,用none表示不记录;
举例:
kern.* : 所有级别的内核类型日志
mail.err: 错误及错误级别以上的mail类型日志
如果不记录某级别的日志,在级别前加“!”,如:
auth.info;auth.!err :info及info级别以上但不包括err级别的auth类型日志

第二字段:
第二字段分两类,本地文件和远程服务器
本地文件:直接就是写本地文件的文件名,如 /var/log/messages。一般来说日志信息会立即写到文件中,但会降低系统效率,可以在文件名前加减号“-”表示先将信息缓存,到一定量后再一次性写入文件,这样可以提高效率;
远程服务器:格式是 “@address”,“@”表示进行远程记录,将日志发送到远程的日志服务器,日志服务器的端口是UDP514,address可以是IP地址,也可以是域名
举例:
# 将所有级别的内核日志发送到终端
kern.*  /dev/console 
# 将所有类型所有级别的日志记录到/var/log/messages文件
*.* /var/log/messages
# 所有info级别以上的信息,不包括mail类型所有级别和authpriv类型的err级别信息,
# 记录到/var/log/messages文件,不立即写入
*.info;mail.none;authpriv.!err       -/var/log/messages
#将所有级别的内核日志发送到远程syslog服务器
kern.*  @1.1.1.1
5. syslog服务器
在linux下提供了sysklogd的syslog服务器的实现,可以记录本机日志也可以接收(syslogd的-r选项)和转发(syslogd的-h选项)来自外部的日志。
sysklogd包括两个程序,klogd和syslogd,klogd用于接收内核日志,再发送到syslogd,syslogd则可以直接接收应用程序和远程的日志,syslogd是通过一个域socket(AF_UNIX)来接收数据的,syslog()函数记录的日志都发送到此域socket,socket文件是/dev/log。
syslog(3)函数发送给syslogd服务器的日志信息前都加上了类型和级别信息,具体格式是“<x>”,“x”是一个0~255的数,8位,低3位表示日志级别,所以共8级,高五位表示日志类型,最多32种,不过目前没用到那么多,可以看看/usr/include/sys/syslog.h中的定义就知道了。
要生成日志信息时,syslogd是先生成日志前部信息:月 日 时:分:秒 主机名 标志,再和日志内容信息拼接起来的,日期用ctime(3)函数获取,隐去了前4个表示星期的字节和后面年的信息,最终生成你所看到的日期格式,老实说那段代码及其丑陋。
6. 结论
syslog方便了程序信息的记录,由于使用了统一的格式记录使得审计也可以比较方便。要记录日志,除了在应用程序中用syslog(3)函数记录外,还要正确配置/etc/syslog.conf文件,使服务器能正确记录那些想记录的日志。

syslog与syslog服务器的配置相关推荐

  1. c语言删除syslog进程,Syslog配置及使用简介

    Syslog配置及使用简介 目录 Syslog配置及使用简介 1 1. Syslog简介 1 2. Syslog协议 1 2.1. syslog体系结构 1 2.2. syslog包格式 2 3. S ...

  2. opc ua服务器大批量修改,opc ua服务器 数据配置

    opc ua服务器 数据配置 内容精选 换一换 云备份提供申请即用的备份服务,使您的数据更加安全可靠.例如,当云服务器或磁盘出现故障或者人为错误导致数据误删时,可以自助快速恢复数据.本节操作介绍备份云 ...

  3. Linux服务器安全配置实例(二)用户账户权限配置

    没有绝对的安全 在上一篇文章<linux服务器安全配置实例(一)>中介绍了我对ssh服务的一些常用的安全配置和性能优化. 其实ssh服务是我们进入服务器的一扇大门,这扇大门是提供正常人使用 ...

  4. linux下syslog命令,syslog命令

    syslog 是Linux系统默认的日志守护进程.默认的syslog配置文件是/etc/syslog.conf文件.程序,守护进程和内核提供了访问系统的日志信息.因此,任何希望生成日志信息的程序都可以 ...

  5. 运维之DNS服务器Bind9配置解析和基础示例及附带命令

    0x03 Bind 配置解析 实例1.DNS主从区域传输介绍与配置 实例2.DNS区域传输限制 实例3.DNS部分二级域名解析 示例1.采用Bind建立一个A记录DNS服务器 示例2.采用Bind建立 ...

  6. 200用户的oa文件服务器配置,oa服务器主要配置

    oa服务器主要配置 内容精选 换一换 您可以使用已有的弹性云服务器快速创建伸缩配置.此时,伸缩配置中的云服务器类型.vCPU.内存.镜像.磁盘参数信息将默认与选择的云服务器规格保持一致.登录管理控制台 ...

  7. 修改服务器2003系统时间,windows2003 时间服务器ntp配置

    发表于:2010-05-02 23:04 | 点击: 212 次 |标签 : 服务器 在Windows 2003 Server 系统下配置成功 1.默认情况下,独立服务器WINDOWS SERVER ...

  8. linux服务器基线配置

    linux服务器基线配置 账号 1 为不同用户创建不同账号: #useradd username #创建账号 #passwd username #设置密码 #chmod 750 directory # ...

  9. 系统服务器一般都要求冗余配置,服务器冗余配置

    服务器冗余配置 内容精选 换一换 迁移前,若选择迁移到已有服务器,请做以下准备工作:需配置目的端服务器所在VPC安全组,如果是Windows系统需要开放TCP的8899端口.8900端口和22端口:如 ...

最新文章

  1. google gflags的参数解析,便捷实用
  2. gramer法则matlab,东南大学几何与代数matlab实验报告(大一专用).doc
  3. wpa_supplicant无线网络配置
  4. python对象的引用_Python 对象引用、可变性和垃圾回收
  5. 全民奇迹辅助制作视频教程
  6. xlsx模块 前端_前端使用SheetJS的xlsx.js实现excel表格生成
  7. div+css实现盖章
  8. 计算机主板电杆,电脑主板cpu供电上下管怎样区分替换
  9. matlab相对误差,相对误差与相对误差限定义-精品课程-山东科技大学.PPT
  10. java生产者消费者模型
  11. 微软sccm服务器,微软SCCM是什么?
  12. 路径详解(绝对路径,相对路径,根相对路径)
  13. 第四章不定积分(∫(e^x)sin²xdx)
  14. Nginx官方文档(四十七)【ngx_stream_js_module|ngx_stream_keyval_module|ngx_stream_limit_conn_module】
  15. arbexpress使用教程_信号发生器使用说明
  16. 程序员崩溃了!想拿的年终奖怎么说黄就黄?!
  17. org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.Mav
  18. 【2013Esri中国用户大会】盘点影像技术三大亮点
  19. 亚马逊新专利曝光,让机器人学会自己开锁并将包裹送入你的家中
  20. php极验证,geetest

热门文章

  1. 最牛逼 Java 日志框架 — Log4j2,性能无敌,横扫对手.....
  2. TM1638 LED数码显示模块ARDUINO驱动代码
  3. java ee中ssh学后感_学习SSH,SSM框架有感
  4. 什么是编程,学习编程的意义是?
  5. OpenAI 宣布将对战 DOTA2 世界冠军 OG,最终决战!
  6. OpenAI 宣布将对战 DOTA2 世界冠军 OG,最终决战! 1
  7. Git之一次Push的回滚之旅
  8. 快递扫地机器人被损坏_熬夜秒到的扫地机器人丢了 快递公司说最多赔几十元...
  9. 今日芯声 | 一张壁纸!让你的小米MIX 3华丽变身“MIX Alpha”
  10. 语音标注必须了解的基础知识点