目录
1、帮助信息
man 3 syslog
2、openlog()函数
此函数用来打开一个到系统日志记录程序的连接,打开之后就可以用syslog或vsyslog函数向系统日志里添加信息。
#include <syslog.h>
void openlog (char*ident,int option ,int facility);
参数 ident:用于表示信息的来源,ident指向的字符信息会被固定地添加在每行日志的前面。
参数option:用于指定openlog函数和接下来调用的syslog函数的控制标志。
参 数 | 说 明 |
LOG_PID | 每条日志信息中都包括进程号 |
LOG_CONS | 如果将信息发送给syslogd守护进程时发生错误,直接将相关信息输出到终端 |
LOG_NDELAY | 立即打开与系统日志的连接(通常情况下,只有在产生第一条日志信息的情况下才会打开与日志系统的连接) |
LOG_NOWAIT | 在记录日志信息时,不等待可能的子进程的创建 |
LOG_ODELAY | 类似于LOG_NDELAY参数,与系统日志的连接只有在syslog函数调用时才会创建 |
LOG_PERROR | 在将信息写入日志的同时,将信息发送到标准错误输出(POSIX.1-2001不支持该参数) |
参数facility:与syslogd守护进程的配置文件对应,日志信息会写入配置文件指定的位置。
facility参数 | syslog.conf中对应的facility取值 |
LOG_KERN | kern |
LOG_USER | user |
LOG_MAIL | |
LOG_DAEMON | daemon |
LOG_AUTH | auth |
LOG_SYSLOG | syslog |
LOG_LPR | lpr |
LOG_NEWS | news |
LOG_UUCP | uucp |
LOG_CRON | cron |
LOG_AUTHPRIV | authpriv |
LOG_FTP | ftp |
LOG_LOCAL0~LOG_LOCAL7 |
3、syslog()函数
用于把日志消息发给系统程序syslogd去记录。
#include <syslog.h>
void syslog(int priority,char*format,……)
参数 priority:消息的紧急级别。
priority参数 | syslog.conf中对应的level取值 |
LOG_EMERG | emerg |
LOG_ALERT | alert |
LOG_CRIT | crit |
LOG_ERR | err |
LOG_WARNING | warning |
LOG_NOTICE | notice |
LOG_INFO | info |
LOG_DEBUG | debug |
参数 format:消息的格式
4、closelog()函数
关闭日志记录。
#include <syslog.h>
void closelog();
5、syslog.conf文件
5.1、格式
类型.级别 [;类型.级别] 动作
注:修改文件后需要重启守护进程!
5.2类型
auth | 认证系统,即询问用户名和口令 |
cron | 系统定时系统执行定时任务时发出的信息 |
daemon | 某些系统的守护程序的syslog,如由in.ftpd产生的log |
kern | 内核的syslog信息 |
lpr | 打印机的syslog信息 |
邮件系统的syslog信息 | |
mark | 定时发送消息的时标程序 |
news | 新闻系统的syslog信息 |
user | 本地用户应用程序的syslog信息 |
uucp | uucp子系统的syslog信息 |
local0..7 | 本地类型的syslog信息,这些信息可以又用户来定义 |
* | 代表以上各种设备 |
5.3、级别
emerg | 紧急,处于Panic状态。通常应广播到所有用户 |
alert | 告警,当前状态必须立即进行纠正。例如,系统数据库崩溃; |
crit | 关键状态的警告。例如,硬件故障; |
err | 其它错误; |
warning | 警告; |
notice | 注意;非错误状态的报告,但应特别处理; |
info | 通报信息; |
debug | 调试程序时的信息; |
none | 通常调试程序时用,指示带有none级别的类型产生的信息无需送出。 |
5.4、动作
/filename (日志文件) | 由绝对路径指出的文件名,此文件必须事先建立; |
@host (远程主机) | @符号后面可以是ip,也可以是域名,默认在/etc/hosts文件下loghost这个别名已经指定给了本机。 |
user (指定用户) | 如果指定用户已登录,那么他们将收到信息 |
* (所有用户) | 所有已登录的用户都将收到信息。 |