my ( $ss,$mm,$hh, $d,$m,$yyyy ) = localtime(time());
$yyyy += 1900;
- $mm += 1;
+ $m += 1;
$log .= sprintf("%04d-%02d-%02d.", $yyyy, $m, $d );
$log .= $ENV{NAME} ? $ENV{NAME} : $1 if $0 =~ m{([^/]+)$};
- my $line = sprintf("%04d-%02d-%02d %02d:%02d:%02d %s\n", $yyyy,$m,$d, $hh,$mm,$ss, join(' ',@_));
+ my $line = join(' ', @_);
+ if ( $line =~ s{^(?:\e\[\d+m)*(\d\d\d\d)\W(\d\d)\W(\d\d) (\d\d:\d\d:\d\d)}{$1-$2-$3 $4} ) {
+ # have timestamp allready
+ } else {
+ my $time = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $yyyy,$m,$d, $hh,$mm,$ss);
+ $line = "$time $line";
+ }
+
$line =~ s/[\r\n]+$/\n/;
print STDERR "creating $log\n" unless -e $log;
- open(my $fh, '>>', $log);
- print $fh $line;
- close $fh;
-
- print STDERR $line; # XXX debug
+ if ( open(my $fh, '>>', $log) ) {
+ print $fh $line;
+ close $fh;
+ } else {
+ print STDERR $line;
+ }
}
if ( -t STDOUT ) { # colorize only if run from terminal !