1*b1cdbd2cSJim Jagielskipackage loghelper;
2*b1cdbd2cSJim Jagielski
3*b1cdbd2cSJim Jagielski#**************************************************************
4*b1cdbd2cSJim Jagielski#
5*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
6*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
7*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
8*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
9*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
10*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
11*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
14*b1cdbd2cSJim Jagielski#
15*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
16*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
17*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
19*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
20*b1cdbd2cSJim Jagielski#  under the License.
21*b1cdbd2cSJim Jagielski#
22*b1cdbd2cSJim Jagielski#**************************************************************
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielskiuse strict;
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim JagielskiBEGIN {
29*b1cdbd2cSJim Jagielski    use Exporter   ();
30*b1cdbd2cSJim Jagielski    our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski    $VERSION     = 1.00;
33*b1cdbd2cSJim Jagielski    # if using RCS/CVS, this may be preferred
34*b1cdbd2cSJim Jagielski    $VERSION = do { my @r = (q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker
35*b1cdbd2cSJim Jagielski    @ISA         = qw(Exporter);
36*b1cdbd2cSJim Jagielski    @EXPORT      = qw(&set_logfile &close_logfile &log_print &setVerbose);
37*b1cdbd2cSJim Jagielski    %EXPORT_TAGS = ( );     # eg: TAG => [ qw!name1 name2! ],
38*b1cdbd2cSJim Jagielski    # your exported package globals go here,
39*b1cdbd2cSJim Jagielski    # as well as any optionally exported functions
40*b1cdbd2cSJim Jagielski    @EXPORT_OK   = ( ); # qw($Var1 %Hashit &func3);
41*b1cdbd2cSJim Jagielski}
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski# ------------------------------- Log into a file -------------------------------
44*b1cdbd2cSJim Jagielskilocal *LOGFILE;
45*b1cdbd2cSJim Jagielskiour $nGlobalLog = 0;
46*b1cdbd2cSJim Jagielskiour $nGlobalVerbose = 0;
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielskisub setVerbose()
49*b1cdbd2cSJim Jagielski{
50*b1cdbd2cSJim Jagielski    $nGlobalVerbose = 1;
51*b1cdbd2cSJim Jagielski}
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielskisub set_logfile($)
54*b1cdbd2cSJim Jagielski{
55*b1cdbd2cSJim Jagielski    my $sLogFile = shift;
56*b1cdbd2cSJim Jagielski
57*b1cdbd2cSJim Jagielski    if (open(LOGFILE, ">$sLogFile"))
58*b1cdbd2cSJim Jagielski    {
59*b1cdbd2cSJim Jagielski        $nGlobalLog = 1;
60*b1cdbd2cSJim Jagielski    }
61*b1cdbd2cSJim Jagielski}
62*b1cdbd2cSJim Jagielskisub close_logfile()
63*b1cdbd2cSJim Jagielski{
64*b1cdbd2cSJim Jagielski    close(LOGFILE);
65*b1cdbd2cSJim Jagielski    $nGlobalLog = 0;
66*b1cdbd2cSJim Jagielski}
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielskisub log_print($)
69*b1cdbd2cSJim Jagielski{
70*b1cdbd2cSJim Jagielski    my $sLine = shift;
71*b1cdbd2cSJim Jagielski    if ($nGlobalLog)
72*b1cdbd2cSJim Jagielski    {
73*b1cdbd2cSJim Jagielski        print LOGFILE $sLine;
74*b1cdbd2cSJim Jagielski    }
75*b1cdbd2cSJim Jagielski    if ($nGlobalVerbose == 1)
76*b1cdbd2cSJim Jagielski    {
77*b1cdbd2cSJim Jagielski        print $sLine;
78*b1cdbd2cSJim Jagielski    }
79*b1cdbd2cSJim Jagielski    else
80*b1cdbd2cSJim Jagielski    {
81*b1cdbd2cSJim Jagielski        # In this special case for NetBeans, which show if a debugger can access.
82*b1cdbd2cSJim Jagielski        # The Line should print anyway.
83*b1cdbd2cSJim Jagielski        if ($sLine =~ /Listening for transport/)
84*b1cdbd2cSJim Jagielski        {
85*b1cdbd2cSJim Jagielski            print $sLine;
86*b1cdbd2cSJim Jagielski        }
87*b1cdbd2cSJim Jagielski    }
88*b1cdbd2cSJim Jagielski}
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielski1;
91