syslogd和klogd

syslogd是Linux系统日志守护进程,负责接收、记录和分发系统日志,通常配合/etc/syslog.conf使用。
klogd是Linux内核日志守护进程,符合收集和处理内核信息,通常配合syslogd使用,但是也可以独立使用。

配置文件解析

配置文件的语法: facility.level action
facility: 标识符

kern     内核信息,首先通过 klogd 传递; 
user 用户进程;
mail 邮件;
daemon 后台进程;
authpriv 授权信息;
syslog 系统日志;
lpr 打印信息;
news 新闻组信息;
uucp 由uucp生成的信息
cron 计划和任务信息。
mark syslog 内部功能用于生成时间戳
local0~local7 与自定义程序使用
* 通配符代表除了 mark 以外的所有功能

level: 日志等级

syslog 级别如下:(按严重程度由高到低的顺序列出了所有可能的优先级。) 
emerg 或 panic 该系统不可用(最紧急消息)
alert 需要立即被修改的条件(紧急消息)
crit 阻止某些工具或子系统功能实现的错误条件(重要消息)
err 阻止工具或某些子系统部分功能实现的错误条件(出错消息)
warning 预警信息(警告消息)
notice 具有重要性的普通条件(普通但重要的消息)
info 提供信息的消息(通知性消息)
debug 不包含函数条件或问题的其他信息(调试级-信息量最多)
none 没有重要级,通常用于排错(不记录任何日志消息)
* 所有级别,除了none

action: 动作,一般跟路径,代表保存到该文件

user.* /var/log/usr.log #将user的log,写入usr.log

Liunx C使用syslog

etc/syslog.conf添加local0.* /var/log/test.log

#include <stdio.h>
#include <syslog.h>

int main(int argc, char *argv[])
{
// 打开系统日志
openlog(argv[0], LOG_PID|LOG_CONS, LOG_LOCAL0);

// 记录日志信息
syslog(LOG_INFO, "This is an informational message.");
syslog(LOG_WARNING, "This is a warning message.");
syslog(LOG_ERR, "This is an error message.");

// 关闭系统日志
closelog();

return 0;
}