pve-installer/Proxmox/Log.pm
Thomas Lamprecht dc6c1a80cc log: record when and that the log got initialized
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2023-06-21 16:39:36 +02:00

51 lines
1.2 KiB
Perl

package Proxmox::Log;
use strict;
use warnings;
use Carp;
use POSIX qw(strftime);
use Time::HiRes qw(gettimeofday);
use base qw(Exporter);
our @EXPORT = qw(log_debug log_error log_info log_notice log_warn);
my $log_fd;
sub init {
my ($log_file) = @_;
croak "log fd is already defined, refuse to reinitialize!" if defined($log_fd);
$log_file = "/tmp/install.log" if !defined($log_file);
$log_fd = IO::File->new(">${log_file}") or croak "could not open log file - $!\n";
log_info("initialized log");
}
my sub iso_like_date_time {
my ($now_seconds, $now_microseconds) = gettimeofday;
my $now_millis = int($now_microseconds / 1000);
return strftime("%F %H:%M:%S", localtime($now_seconds)) . sprintf(".%03d", $now_millis);
}
my sub _log {
my ($level, $message) = @_;
my $fd = $log_fd;
if (!defined($log_fd)) {
carp "log FD not initialized, falling back to stderr";
$fd = *STDERR;
}
my $date_time = iso_like_date_time();
$level = uc($level);
chomp $message;
print $log_fd "$date_time $level: $message\n";
}
sub log_cmd { _log('cmd', @_); }
sub log_debug { _log('debug', @_); }
sub log_error { _log('error', @_); }
sub log_info { _log('info', @_); }
sub log_warn { _log('warn', @_); }
1;