syslogd(8) - Linux man page
来源:互联网 发布:惠普暗影精灵2新机优化 编辑:程序博客网 时间:2024/05/21 15:49
有两个syslog函数,一个是内核中的(man 2 syslog,sys_syslog),一个是libc的函数(man 3 syslog)。
前者int syslog(int type, char *bufp, int len);用于操作内核printk的打印缓存。封装的libc函数为klogctl。
http://linux.die.net/man/2/syslog
syslog, klogctl - read and/or clear kernel message ring buffer; set console_loglevel
它可以读、写、清除、设置内核打印缓冲区。
后者syslog和openlog等结合使用,输出的log被syslogd所监听到。
void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
openlog可以设置具体的log类别,如LOG_LOCAL0 through LOG_LOCAL7、LOG_DAEMON、LOG_KERN等。
如果想向对应的log文件写log,则在syslog的第一个参数priority使用如(LOG_CRIT | LOG_LOCAL7)等方式,打印到LOG_LOCAL7对应的log文件。
Sysklogd分syslogd和klogd。
syslogd支持 both internet and unix domain sockets。
klogd通过/proc/kmsg,或者通过sys_syslog读内核消息。syslogd是通过klogd来读取系统内核信息。
In Linux there are two potential sources of kernel log information: the /proc file system and the syscall (sys_syslog) interface, although ultimately they are one and the same. Klogd is designed to choose whichever source of information is the most appropriate. It does this by first checking for the presence of a mounted /proc file system. If this is found the /proc/kmsg file is used as the source of kernel log information. If the proc file system is not mounted klogd uses a system call to obtain kernel messages. The command line switch (-s) can be used to force klogd to use the system call interface as its messaging source.
1> 所有系统信息是输出到ring buffer中去的.dmesg所显示的内容也是从ring buffer中读取的.(printk)
2> LINUX系统中/etc/init.d/sysklogd会启动2个守护进程:Klogd&&Syslogd。不一定的。
3> klogd是负责读取内核信息的,有2种方式:
sys_syslog
klogd对/proc/kmsg进行读取
4> Klogd的输出结果会传送给syslogd进行处理,syslogd会根据/etc/syslog.conf的配置把log信息输出到/var/log/下的不同文件中. 不清楚。
http://linux.die.net/man/8/syslogd
http://book.51cto.com/art/200912/168763.htm
syslogd [ -a socket ] [ -d ] [ -f config file ] [ -h ] [ -l hostlist ] [ -m interval ] [ -n ] [ -p socket ] [ -r ] [ -s domainlist ] [ -S ] [ -v ] [ -x ]
-f 读配置文件
配置文件中:
! 取反
* 任意
样例一、
# Sample syslog.conf
mail.*;mail.!=info
/usr/adm/mail
news.info;news.!crit
/usr/adm/news
样例二、
!* ---------------???
local6.err %/var/log/publog 10485760 666 ------------- 文件大小 和 权限。
!|AUTH|FP_CP_TABLE|
*.debug %/var/log/debug_trace 20971520 666
12.2.2 syslog配置
syslog的配置文件为/etc/syslog.conf,在该文件中指定了syslog记录日志的信息来源、信息类型以及保存位置。下面是该文件内容的一个实例。
- # Log all kernel messages to the console.
- # Logging much else clutters up the screen.
- # kern.* /dev/console
- # Log anything (except mail) of level info or higher.
- # Don't log private authentication messages!
- # 把除邮件、授权和定时任务以外的其他info级别的信息记录到/var/log/messages日志文件中
- * .info;mail.none;authpriv.none;cron.none /var/log/messages
- # The authpriv file has restricted access.
- # 把所有授权信息记录到/var/log/secure日志文件中
- authpriv.* /var/log/secure
- # Log all the mail messages in one place.
- # 把所有级别的邮件信息记录到/var/log/maillog日志文件中
- mail.* -/var/log/maillog
- # Log cron stuff
- # 把所有级别的定时任务信息记录到/var/log/cron日志文件中
- cron.* /var/log/cron
- # Everybody gets emergency messages
- # 把emerg级别的信息发送给所有登录用户
- * .emerg *
- # Save news errors of level crit and higher in a special file.
- uucp,news.crit /var/log/spooler
- # Save boot messages also to boot.log
- # 把所有的系统启动信息记录到/var/log/boot.log日志文件中
- local7.* /var/log/boot.log
该文件以井号"#"为注释符,其中每一行的语法格式为:
- [消息来源.消息级别] [动作]
其中,[消息来源.消息级别]和[动作]之间以Tab键进行分隔,同一行syslog配置中允许出现多个[消息来源.消息级别],但必须要使用分号";"进行分隔,例如:
- mail.*; cron.* /var/log/test.log
其中消息来源表示发出消息的子系统,如表12.3列出了syslog中的所有消息来源。
表12.3 syslog消息来源及说明
消 息 来 源
说 明
消 息 来 源
说 明
authpriv
安全/授权信息
邮件子系统
cron
定时任务
news
网络新闻子系统
daemon
守护进程
syslog
syslogd内部产生的信息
ftp
ftp守护进程
user
一般用户级别信息
kern
内核信息
uucp
UUCP子系统
lpr
打印机子系统
local0-local7
本地用户
优先级代表消息的紧急程度,如表12.4所示按级别由高到低列出了syslog的所有消息级别及说明。
表12.4 syslog消息级别及说明
消 息 级 别
说 明
消 息 级 别
说 明
emerg
最紧急的消息
warning
警告消息
alert
紧急消息
notice
普通但重要的消息
crit
重要消息
info
通知性消息
err
出错消息
debug
调试级的消息——消息量最多
Syslog消息级别是向上匹配的,也就是说如果指定了一个消息级别,那么指定级别及比该指定级别更高级的消息都会被包括进去。例如,warning表示所有大于或者等于warning级别的消息都会被处理,包括emerg、alert、crit、err和warning。如果指定的是debug级别,那么所有级别的消息都会被处理。消息级别越低,消息的数量就越多。如果只想匹配某个确定级别的消息,而不希望包括更高级别的消息,可以使用等号"="进行指定。例如希望处理cron的notice级别的消息:
- cron.=notice /var/log/test.log
除此之外,syslog还支持两个特殊的消息级别关键字:"*"和none。其中"*"表示匹配所有来源或级别的消息;none表示忽略所有消息。
[动作]是用于指定消息的处理方式。Syslog支持把消息保存到日志文件中、发送给指定的用户、显示在终端上或者通过网络发送到另外一台syslog服务器上进行处理。如表12.5中列出了Syslog中所有可用的动作及其说明。
表12.5 syslog动作说明
动 作
说 明
文件名
将消息保存到指定的文件中
@主机名或IP地址
转发消息到另外一台syslog服务器上进行处理
*
把消息发送到所有用户的终端上
/dev/console
把消息发送到本地主机的终端上
| 程序
通过管道把消息重定向到指定的程序
用户名列表
把消息发送给指定的用户,
用户名以逗号“,”进行分隔
- syslogd(8) - Linux man page
- syslogd(8) - Linux man page
- lspci(8)linux man page
- linux安装man page
- radvd - Linux man page
- Linux - man page
- linux man page
- linux man page 使用
- Linux安装Man Page(man手册)
- Linux安装Man Page(man手册)
- Linux 的man page/info page
- times(2) - Linux man page
- radvd.conf - Linux man page
- getaddrinfo(3) - Linux man page
- write(2) - Linux man page
- popen(3) - Linux man page
- pdcp(1) - Linux man page
- /proc详解--linux man page
- linux 下tomcat修改端口
- Twitter Storm源代码分析之Tuple是如何发送的
- java MD5 加密
- (转载)Logistic regression (逻辑回归)
- Android开发 使用Lame把音频文件转换成mp3格式
- syslogd(8) - Linux man page
- sip2peer服务端研究分享3:消息发送:
- Twitter Storm: Transactional Topolgoy简介
- ThreadLocal的用法
- json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
- 广播接收者 作用:短信监听器, 转播电话,重启监听
- java Executors线程池
- java_集合体系之ArrayList详解、源码及示例——03
- HTTP消息头字段