Syslog

使用Proc::Daemon可以非常方便的写一个daemon程序,可是这样的程序看不见、摸不着,我们怎样才能知道它干了什么呢?最简单的方法是维护一个日志文件,向里面输出一些动作记录,以便跟踪和调试;更通用的方法是使用syslog,daemon程序只需把日志信息传给syslogd(也是一个daemon),syslogd则负责把不同程序的日志信息存到相应的日志文件里。

Cygwin里面也带有syslogd,运行syslogd-config就把syslogd安装为Windows Service,首次安装后要手工打开该服务才能够使用。

Perl脚本可以使用Unix::Syslog向syslogd发送日志信息。下面的程序是一个简单的例子:

#!/usr/bin/perl
use Unix::Syslog qw(:macros);
use Unix::Syslog qw(:subs);
openlog("hello.pl", LOG_PERROR|LOG_CONS, LOG_LOCAL7);
syslog(LOG_INFO, "hello, world");
closelog;

缺省的(在/etc/syslog.conf里面设置),日志信息输出到/var/log/messages,运行上面的程序后,该文件里会增加一条信息,类似于:

Sep 12 13:09:35 machine-name hello.pl: hello, world

通过修改/etc/syslog.conf文件,我们可以将不同程序的日志信息存放到不同的日志文件里,具体操作参见man syslog.conf

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据