File: Logging.pm

package info (click to toggle)
fuzzyocr 3.6.0-15
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 804 kB
  • sloc: perl: 3,127; sh: 45; makefile: 2
file content (91 lines) | stat: -rw-r--r-- 2,784 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# <@LICENSE>
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at:
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# </@LICENSE>

package FuzzyOcr::Logging;

use base 'Exporter';
our @EXPORT_OK = qw(debuglog errorlog infolog warnlog logfile);

use Mail::SpamAssassin::Logger qw(log_message would_log);
use FileHandle;
use Fcntl ':flock';
use POSIX qw(strftime);

sub logfile {
    my $conf = FuzzyOcr::Config::get_config();
    my $logtext = $_[0];
    my $time = strftime("%Y-%m-%d %H:%M:%S",localtime(time));
    $logtext =~ s/\n/\n                      /g;

    my $fname = Mail::SpamAssassin::Util::untaint_file_path($conf->{focr_logfile});
    unless ( open LOGFILE, ">>", $fname ) {
       warn "Can't open $conf->{focr_logfile} for writing, check permissions";
       return;
    }
    flock( LOGFILE, LOCK_EX );
    seek( LOGFILE, 0, 2 );
    print LOGFILE "$time [$$] $logtext\n";
    close LOGFILE;
}

sub _not_debug {
    return $Mail::SpamAssassin::Logger::LOG_SA{level} != 3;
}
sub _log {
    my $conf = FuzzyOcr::Config::get_config();
    my $type  = $_[0];
    my @lines = split('\n',$_[1]);
    foreach (@lines) { log_message($type,"FuzzyOcr: $_"); }
}
    
sub errorlog {
    my $conf = FuzzyOcr::Config::get_config();
    _log("error",$_[0]) if $conf->{focr_log_stderr};
    if (defined $conf->{focr_logfile}) {
        logfile($_[0]);
    }
}

sub warnlog {
    my $conf = FuzzyOcr::Config::get_config();
    _log("warn",$_[0]) if $conf->{focr_log_stderr};
    if (defined $conf->{focr_logfile} and ($conf->{focr_verbose} >= 1)) {
        logfile($_[0]);
    }
}

sub infolog {
    my $conf = FuzzyOcr::Config::get_config();
    unless (_not_debug()) {
        _log("info",$_[0]) if $conf->{focr_log_stderr};
    }
    if (defined $conf->{focr_logfile} and ($conf->{focr_verbose} >= 2)) {
        logfile($_[0]);
    }
}

sub debuglog {
    my $conf = FuzzyOcr::Config::get_config();
    unless (_not_debug()) {
        _log("dbg",$_[0]) if $conf->{focr_log_stderr};
    }
    if (defined $conf->{focr_logfile} and ($conf->{focr_verbose} >= 3)) {
        logfile($_[0]);
    }
}

1;