Subversion Repositories DevTools

Rev

Rev 3846 | Rev 7387 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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