use Sys::Syslog qw(:DEFAULT setlogsock) our ( $LOG, $Debug, $start ); $Debug = 4; ## I use 0 for production, and 1..9 for testing our $NAME = "$prog-$Debug"; ## $prog should be a name to help you setlogsock('unix'); openlog(" $$ Srv", 'ndelay', 'localn'); ## 'n' is defined by system admin syslog('info', "############# Starting #############"); . . . if ( $Debug == 0 ) ## This is production { open ($LOG, ">","/dev/null") || Die_RTN("$NAME: Not open-8 /dev/null"); } else ## This will log for levels 1..9 { open ($LOG, ">","./logs/Child$$") || Die_RTN("$NAME: Not open-9 Child$$"); my $time = time; $start = 0; print $LOG "Info: |$time|$start|\n"; } $start++; if ( $Debug >= 4 ) ## This is for level 4 or greater debug information { my $ctime = time; print $LOG "Info: |$ctime|$start|\n"; } . . . closelog(); close $LOG;