On Linux (and probably other unices), there is a file called /etc/syslog.conf which governs where your output will go. You can add a line like
local2.* /var/log/your_log_name
This defines the local2 category for your use.
Include Sys::Syslog in your script or module:
use Sys::Syslog qw(:DEFAULT setlogsock);
Then make a sub like this one:
sub syslog_event {
my ( $type, $message ) = @_;
Sys::Syslog::setlogsock( 'unix' );
openlog( 'daemon_name', '', 'local2' );
$message =~ s/\s+$//;
syslog( $type, $message );
closelog();
return();
} # END syslog_event
Then call syslog_event as needed passing it one of the allowed types and your message:
syslog_event( 'info', 'daemon starting' );
The types are taken from the system types. Look in
man 3 syslog
for 'level'. You'll see things like LOG_INFO, the type you need is everything after LOG_. You can use lower case if you like.
Phil |