source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Logger.pm @ 468

Last change on this file since 468 was 468, checked in by mabarracus, 4 years ago

Copyt trusty code

File size: 2.1 KB
Line 
1package Ocsinventory::Logger;
2# TODO use Log::Log4perl instead.
3use Carp;
4sub new {
5
6  my (undef, $params) = @_;
7
8  my $self = {};
9  bless $self;
10  $self->{backend} = [];
11  $self->{config} = $params->{config};
12
13  $self->{debug} = $self->{config}->{debug}?1:0;
14  my @logger;
15
16  if (exists ($self->{config}->{logger})) {
17    @logger = split /,/, $self->{config}->{logger};
18  } else {
19    # if no 'logger' parameter exist I use Stderr as default backend
20    push @logger, 'Stderr';
21  }
22
23  my @loadedMbackends;
24  foreach (@logger) {
25    my $backend = "Ocsinventory::LoggerBackend::".$_;
26    eval ("require $backend"); # TODO deal with error
27    if ($@) {
28        print STDERR "Failed to load Logger backend: $backend ($@)\n";
29        next;
30    } else {
31        push @loadedMbackends, $_;
32    }
33
34    my $obj = new $backend ({
35      config => $self->{config},
36      });
37    push @{$self->{backend}}, $obj if $obj;
38  }
39 
40  my $version = "Ocsinventory unified agent for UNIX, Linux and MacOSX ";
41  $version .= exists ($self->{config}->{VERSION})?$self->{config}->{VERSION}:'';
42  $self->debug($version."\n");
43  $self->debug("Log system initialised (@loadedMbackends)");
44
45  $self;
46}
47
48sub log {
49  my ($self, $args) = @_;
50
51  # levels: info, debug, warn, fault
52  my $level = $args->{level};
53  my $message = $args->{message};
54  my $header = $self->{header};
55
56  return if ($level =~ /^debug$/ && !($self->{debug}));
57
58  chomp($message);
59
60  #Add a header to message if needed
61  $message="$header $message" if $header;
62
63  $level = 'info' unless $level;
64
65  foreach (@{$self->{backend}}) {
66    $_->addMsg ({
67      level => $level,
68      message => $message
69    });
70  }
71  confess if $level =~ /^fault$/; # Die with a backtace
72}
73
74sub debug {
75  my ($self, $msg) = @_;
76  $self->log({ level => 'debug', message => $msg});
77}
78
79sub info {
80  my ($self, $msg) = @_;
81  $self->log({ level => 'info', message => $msg});
82}
83
84sub error {
85  my ($self, $msg) = @_;
86  $self->log({ level => 'error', message => $msg});
87}
88
89sub fault {
90  my ($self, $msg) = @_;
91  $self->log({ level => 'fault', message => $msg});
92}
93
94sub user {
95  my ($self, $msg) = @_;
96  $self->log({ level => 'user', message => $msg});
97}
98
991;
Note: See TracBrowser for help on using the repository browser.