使用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。