syslog(),openlog(),closelog()

转载 2007年09月13日 16:25:00

    这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。
    通常,syslog守护进程读取三种格式的记录消息。此守护进程在启动时读一个配置文件。一般来说,其文件名为/etc/syslog.conf,该文件决定了不同种类的消息应送向何处。例如,紧急消息可被送向系统管理员(若已登录),并在控制台上显示,而警告消息则可记录到一个文件中。该机制提供了syslog函数,其调用格式如下
#include <syslog.h>
void openlog (char*ident,int option ,int facility);
void syslog(int priority,char*format,……)
void closelog();

    调用openlog是可选择的。如果不调用openlog,则在第一次调用syslog时,自动调用openlog。调用closelog也是可选择的,它只是关闭被用于与syslog守护进程通信的描述符。调用openlog 使我们可以指定一个ident,以后, 此ident 将被加至每则记录消息中。ident 一般是程序的名称(例如 ,cron ,ine 等)


程序的用法示例代码如下:


#include <syslog.h>
int main(int argc, char **argv)
{
    openlog("MyMsgMARK", LOG_CONS | LOG_PID, 0);
    syslog(LOG_DEBUG,
           "This is a syslog test message generated by program '%s'/n",
           argv[0]);
    closelog();
    return 0;
}
 
编译生成可执行程序后,运行一次程序将向/var/log/message文件添加一行信息如下:
        Feb 12 08:48:38 localhost MyMsgMARK[7085]: This is a syslog test message generated by program './a.out'
 
openlog及closelog函数说明
此函数原型如下:
void openlog(const char *ident, int option, int facility);
此函数用来打开一个到系统日志记录程序的连接,打开之后就可以用syslog或vsyslog函数向系统日志里添加信息了。而closelog函数就是用来关闭此连接的。
openlog的第一个参数ident将是一个标记,ident所表示的字符串将固定地加在每行日志的前面以标识这个日志,通常就写成当前程序的名称以作标记。第二个参数option是下列值取与运算的结果:LOG_CONS, LOG_NDELAY, LOG_NOWAIT, LOG_ODELAY, LOG_PERROR, LOG_PID,各值意义请参考man openlog手册:
       LOG_CONS
              Write directly to system console if there is an error while sending to system logger.

       LOG_NDELAY
              Open the connection immediately (normally, the connection is opened when the first message is logged).

       LOG_NOWAIT
              Don’t  wait  for  child processes that may have been created while logging the message.  (The GNU C library does not create a
              child process, so this option has no effect on Linux.)

       LOG_ODELAY
              The converse of LOG_NDELAY; opening of the connection is delayed until syslog() is called.  (This is the  default,  and  need
              not be specified.)

       LOG_PERROR
              (Not in SUSv3.) Print to stderr as well.

       LOG_PID
              Include PID with each message.
 
第三个参数指明记录日志的程序的类型。

syslog函数及参数
syslog函数用于把日志消息发给系统程序syslogd去记录,此函数原型是:
void syslog(int priority, const char *format, ...);
第一个参数是消息的紧急级别,第二个参数是消息的格式,之后是格式对应的参数。就是printf函数一样使用。

如果我们的程序要使用系统日志功能,只需要在程序启动时使用openlog函数来连接syslogd程序,后面随时用syslog函数写日志就行了。

linux/ubuntu下日志系统和syslog函数相关

网上一般介绍日志日志文件时,都说日志文件存放在/var/log/messages中,但是其实一般系统不同,日志文件存放的目录以及文件名都不尽相同。在ubuntu 3.8.0-19-generic下,日...
  • baidu20008
  • baidu20008
  • 2013年09月04日 22:12
  • 4988

DPDK中Log的使用方法

本文谢绝转载,如有需要,请以链接的方式引用。 注:本文中的代码为git库中的dpdk-2.0.0-rc1,对应Linux平台。 1 log简介     dpdk中通过log系统记录相关的...
  • kabar_strider
  • kabar_strider
  • 2015年04月19日 18:24
  • 2963

日志-syslog系统日志

前言 syslog是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/sysctl.conf文件 通常,syslog 接受来自系统的各种功能的信息,每个信息都包括重要级。/et...
  • ty_hf
  • ty_hf
  • 2017年02月17日 20:47
  • 3282

openlog、syslog和closelog函数

守护进程日志的实现 syslogd守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在syslogd守护进程的配置文件中设定的。守护进程日志主要涉及3个函数,分别是o...
  • happy803
  • happy803
  • 2012年12月07日 08:57
  • 400

syslog(),closelog()与openlog()--日志操作函数 .

为了满足某些目的,进行日志记录是很有必要的。     在典型的 LINUX 安装中,/var/log/messages 包含所有的系统消息,/var/log/mail 包含来自邮件系统的其它日志消息,...
  • liwentao1091
  • liwentao1091
  • 2011年08月10日 20:51
  • 1537

系统日志函数syslog(),openlog(),closelog()

这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。      通常,syslog守护进程读取三...
  • black_OX
  • black_OX
  • 2012年02月02日 16:43
  • 521

syslog(),closelog()与openlog()--日志操作函数

为了满足某些目的,进行日志记录是很有必要的。 在典型的 LINUX 安装中,/var/log/messages 包含所有的系统消息,/var/log/mail 包含来自邮件系统的其它日志消息,/...
  • wangkehuai
  • wangkehuai
  • 2011年12月24日 16:33
  • 510

openlog, syslog, closelog

这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。     通常,syslog守护进程读取三种...
  • fqx111
  • fqx111
  • 2014年01月09日 09:40
  • 501

syslog(),openlog(),closelog()

这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。    通常,syslog守护进程读取三种格式...
  • satanwxd
  • satanwxd
  • 2011年02月21日 16:00
  • 1653

openlog(),系统信息记录

守护进程日志的实现 syslogd守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在syslogd守护进程的配置文件中设定的。守护进程日志主要涉及3个函数,分别是ope...
  • wsclinux
  • wsclinux
  • 2015年01月16日 10:54
  • 321
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:syslog(),openlog(),closelog()
举报原因:
原因补充:

(最多只允许输入30个字)