Subversion Repositories DevTools

Rev

Rev 7387 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1044 dpurdie 1
########################################################################
7406 dpurdie 2
# COPYRIGHT - VIX IP PTY LTD ("VIX"). ALL RIGHTS RESERVED.
1044 dpurdie 3
#
7406 dpurdie 4
# Module name   : Logger.pm
1044 dpurdie 5
# Module type   :
6
# Compiler(s)   : Perl
7
# Environment(s):
8
#
7406 dpurdie 9
# Description   : Logger
1044 dpurdie 10
#                 Logs to a file
11
#
12
#......................................................................#
13
 
14
require 5.008_002;
15
use strict;
16
use warnings;
1038 dpurdie 17
package Logger;
18
 
7406 dpurdie 19
# Set auto flush
1038 dpurdie 20
$| = 1;
21
 
22
sub new ($$) {
1289 dpurdie 23
    my ($class, $conf) = @_;
24
    return bless { conf => $conf }, $class;
1038 dpurdie 25
}
26
 
7387 dpurdie 27
sub setVerbose ($) {
28
}
29
 
1038 dpurdie 30
sub logmsg ($$) {
1289 dpurdie 31
    my ($self, $msg) = @_;
32
    my $conf = $self->{conf};
6475 dpurdie 33
 
34
    if ($conf->{debug}) {
35
        print($msg, "\n");
36
    }
37
 
1289 dpurdie 38
    my $logfile = $conf->{'logfile'};
1038 dpurdie 39
 
1289 dpurdie 40
    open my $fh, ">>$logfile" or die "Can't write blat logfile $logfile: $!\n";
41
    $msg =~ s~\s+$~~;
42
    print $fh localtime()." (PID $$): $msg\n";
1038 dpurdie 43
    close $fh;
44
 
45
    unless ( $self->{RollingLogs} )
46
    {
47
        #
48
        #   Is it time to roll the log file
49
        #
50
        my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
51
           $atime,$mtime,$ctime,$blksize,$blocks) = stat($logfile);
52
 
53
        if ( $size > $conf->{'logfile.size'} )
54
        {
55
            rotatelog($self);
56
        }
57
    }
58
 
59
    return undef;
60
}
61
 
62
sub err ($$) {
1289 dpurdie 63
    my ($self, $msg) = @_;
64
    $self->logmsg("ERROR: $msg");
65
    $SIG{__WARN__} = undef;
1038 dpurdie 66
    $SIG{__DIE__} = undef;
1289 dpurdie 67
    die "ERROR: $msg\n";
1038 dpurdie 68
}
69
 
70
sub warn ($$) {
1289 dpurdie 71
    my ($self, $msg) = @_;
72
    $self->logmsg("WARNING: $msg");
1038 dpurdie 73
    return undef;
74
}
75
 
76
sub verbose ($$) {
77
    my $self = shift;
1289 dpurdie 78
    my $conf = $self->{conf};
79
    $self->logmsg("(V): @_") if ( $conf->{verbose} > 0 );
1038 dpurdie 80
    return undef;
81
}
82
 
83
sub verbose2 ($$) {
84
    my $self = shift;
1289 dpurdie 85
    my $conf = $self->{conf};
86
    $self->logmsg("(V): @_") if ( $conf->{verbose} > 1 );
1038 dpurdie 87
    return undef;
88
}
89
 
90
sub verbose3 ($$) {
91
    my $self = shift;
1289 dpurdie 92
    my $conf = $self->{conf};
93
    $self->logmsg("(V): @_") if ( $conf->{verbose} > 2 );
1038 dpurdie 94
    return undef;
95
}
96
 
97
 
98
sub rotatelog ($) {
1289 dpurdie 99
    my $self = shift;
100
    my $conf = $self->{conf};
101
    my $logfile = $conf->{'logfile'};
1038 dpurdie 102
    $self->{RollingLogs} = 1;
103
 
1289 dpurdie 104
    $self->logmsg('Rotating logfile');
1038 dpurdie 105
    my $num = $conf->{'logfile.count'};
106
    unlink "$logfile.$num" if ( -f "$logfile.$num");;
107
    for (; $num > 1 ; $num--)
108
    {
109
        my $prev = $num - 1;
3846 dpurdie 110
        rename ("$logfile.$prev", "$logfile.$num") if ( -f "$logfile.$prev");
1038 dpurdie 111
    }
3846 dpurdie 112
    rename ($logfile, "$logfile.$num");
1289 dpurdie 113
    $self->logmsg('Rotating logfile complete');
1038 dpurdie 114
    $self->{RollingLogs} = 0;
115
    return undef;
116
}
117
 
118
1;