]> git.proxmox.com Git - pve-installer.git/blame - Proxmox/Log.pm
gtk: show the unit for disk related options
[pve-installer.git] / Proxmox / Log.pm
CommitLineData
84dc3d6f
TL
1package Proxmox::Log;
2
3use strict;
4use warnings;
5
6use Carp;
7use POSIX qw(strftime);
8use Time::HiRes qw(gettimeofday);
9
10use base qw(Exporter);
11our @EXPORT = qw(log_debug log_error log_info log_notice log_warn);
12
13my $log_fd;
14sub init {
15 my ($log_file) = @_;
16 croak "log fd is already defined, refuse to reinitialize!" if defined($log_fd);
17 $log_file = "/tmp/install.log" if !defined($log_file);
18 $log_fd = IO::File->new(">${log_file}") or croak "could not open log file - $!\n";
dc6c1a80 19 log_info("initialized log");
84dc3d6f
TL
20}
21
22my sub iso_like_date_time {
23 my ($now_seconds, $now_microseconds) = gettimeofday;
24 my $now_millis = int($now_microseconds / 1000);
25 return strftime("%F %H:%M:%S", localtime($now_seconds)) . sprintf(".%03d", $now_millis);
26}
27
28my sub _log {
29 my ($level, $message) = @_;
30
31 my $fd = $log_fd;
32 if (!defined($log_fd)) {
33 carp "log FD not initialized, falling back to stderr";
34 $fd = *STDERR;
35 }
36
37 my $date_time = iso_like_date_time();
38 $level = uc($level);
39 chomp $message;
40
41 print $log_fd "$date_time $level: $message\n";
42}
43
44sub log_cmd { _log('cmd', @_); }
45sub log_debug { _log('debug', @_); }
46sub log_error { _log('error', @_); }
47sub log_info { _log('info', @_); }
48sub log_warn { _log('warn', @_); }
49
501;