mirror of
https://git.proxmox.com/git/pve-installer
synced 2025-04-29 12:40:02 +00:00
51 lines
1.2 KiB
Perl
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;
|