# subroutine name: LOG # Appends message to log file. Before message timestamp is added. # # Global variables used: # $no_flock - disable flock or not sub LOG { my ($filename,$message)=@_; mkdir("logs", 0777); my $existed=-e "logs/$filename.log"; if (open(LOGFILE, ">>logs/$filename.log")) { my $txt=localtime()."|$message\n"; unless ($no_flock) { # Exclusive locking flock(LOGFILE, 2) ; # In case someone appended while we # were waiting, seek to EOF seek(LOGFILE, 0, 2); } print LOGFILE $txt; # unlock file flock(LOGFILE, 8) unless ($no_flock); close(LOGFILE); chmod(0666, "logs/$filename.log") unless ($existed); } }