I would look to using Log::Log4perl for all your logging needs. But for
what you are doing try setting $| = 1 (autoflush).
________________________________
From: Vergara, Michael (TEM)
Sent: Wednesday, November 09, 2005 1:25 PM
To: dbi-users@perl.org
Subject: Logging Question
Hello Everyone:
I have a Perl script that connects to multiple Oracle databases. I have
the script write some status information to
a log file. There is one particular database that hangs in processing,
and I don't know why. The log file does not seem
to be written until the file is closed.
I am wondering, is there a Perl command or technique that will force
lines that are logically written to a log file to be
physically written to that file?
Here's my opening code:
#
#
------------------------------------------------------------------------
-
# Open Log file
#
------------------------------------------------------------------------
-
my $logFileName = "${HomeDir}/work/monitor/output/logs/db_status.log";
open( LOGF, ">>" . $logFileName ) or die "\nCannot open log file\n\n";
print LOGF "\n----------\n";
print LOGF sprintf("db_status started at %02d-%02d-%04d
%02d:%02d:%02d\n",
$Tm->mon+1, $Tm->mday, $Tm->year+1900, $Tm->hour,
$Tm->min, $Tm->sec );
The line that says 'db_status started...' does not get written for the
hanging system because I usually 'kill -9' or 'Ctrl-C'
the process. I'd like to force a write after each section so I can see
there the process is hanging.
Any help will be appreciated.
Thanks,
Mike
________________________________
Michael P. Vergara Be good and you will be lonesome
Oracle Database Administrator Mark Twain
(951) 914-2000 (Voice)
(951) 914-2990 (FAX)
www.guidant.com <http://www.guidant.com/>
Any views expressed herein are not necessarily those of Guidant
Corporation.