Subversion Repositories DevTools

Rev

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