Subversion Repositories DevTools

Rev

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