Linux 版 (精华区)
发信人: tcpip (偶的昵称改了), 信区: Linux
标 题: 容易忽视的函数和调用(五)-- syslog cpu
发信站: 哈工大紫丁香 (Wed Jan 5 16:44:26 2000), 转信
发信人: cpu (奔腾的心), 信区: Solaris
标 题: 容易忽视的函数和调用(五)-- syslog cpu
发信站: 华南网木棉站 (Tue Oct 13 17:05:48 1998), 转信
这一节说一下syslog吧, 许多人都知道有这么个函数, 但是不一定都去用它.
意义很明显, 该函数是用来作log的, 可以把错误或者警告信息写到指定的日
志文件或者是控制台console上面去.
#include <syslog.h>
void syslog(int priority, char *logstring, /* parameters */
...);
priority指定log信息的level和facility, level指明log的级别, 有0~7八个
级别, 分别是LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING,
LOG_NOTICE, LOG_INFO, LOG_DEBUG, 缺省的是LOG_NOTICE, LOG_DEBUG级别
最低. facility可以用来标识作日志的进程类型, 比如cron和ftp分别有自己
的facility分别是LOG_CRON和LOG_FTP, 缺省的是LOG_USER. 其它还有诸如
LOG_KERN, LOG_MAIL, LOG_UUCP, LOG_NEWS等等, 请看manual.
log的去向? 到文件还是到console? 在/etc/syslog.conf里设置, 比如:
*.err;kern.notice;auth.notice;user.none /dev/console
*.err;kern.debug;daemon.notice;mail.crit;user.none /var/adm/messages
*.err, 所有facility的LOG_ERR级别的log同时写入console和/var/adm/messages;
kern.notice, facility为LOG_KERN的进程发出LOG_NOTICE级别的log写入console;
同理你可以定义自己的log行, 比如: local1.notice /dev/console表示facility
为LOG_LOCAL1, level为notice的日志写入控制台.
参数char *logstring, ...同printf的调用格式. 比如:
syslog(LOG_USER|LOG_ERR, "process %d error", getpid( ));
syslog调用实际上是通过unix域或者udp socket连接syslog发日志请求然后由syslogd
来作日志的, 如果是通过udp的(端口514), 则/etc/hosts里面会有loghost行, 指出
syslogd所在主机, solaris就是这样的, 有一次偶删了loghost, 搞得很多应用出错
做不了log.
syslog一个很大的用处是可以让非root身份的应用程序往console上写信息, 对于有
root权限的应用, 很简单:
fd = open("/dev/console", O_WRONLY);
dup2(fd, 2)
...
perror(...) 或者fprintf(stderr, ...);
...
但是对于非root身份的应用, open那句肯定出错, 没权限, 所以只好求助于syslog了.
另外还有openlog函数可以在log行头加进程名称和ID以及其它选项, man openlog
man closelog...
--
******************************************************
青岛啤酒,可能是世界上最好的啤酒 。。。 。。。
******************************************************
※ 修改:.xh 于 Jan 5 15:33:37 修改本文.[FROM: 202.38.248.62]
※ 来源:.华南网木棉站 bbs.gznet.edu.cn.[FROM: 202.96.151.222]--
※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: 202.118.239.10]
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.074毫秒