Subversion Repositories DevTools

Rev

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