/[meteor]/trunk/Meteor/Syslog.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/Meteor/Syslog.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 67 - (hide annotations)
Sat Mar 28 01:42:07 2009 UTC (15 years, 1 month ago) by dpavlin
File size: 3360 byte(s)
correct trunk
1 knops.gerd 11 #!/usr/bin/perl -w
2     ###############################################################################
3     # Meteor
4     # An HTTP server for the 2.0 web
5     # Copyright (c) 2006 contributing authors
6     #
7     # Subscriber.pm
8     #
9     # Description:
10     # Convenience interface to syslog
11     #
12     ###############################################################################
13     #
14     # This program is free software; you can redistribute it and/or modify it
15     # under the terms of the GNU General Public License as published by the Free
16     # Software Foundation; either version 2 of the License, or (at your option)
17     # any later version.
18     #
19     # This program is distributed in the hope that it will be useful, but WITHOUT
20     # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21     # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
22     # more details.
23     #
24     # You should have received a copy of the GNU General Public License along
25     # with this program; if not, write to the Free Software Foundation, Inc.,
26     # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27     #
28     # For more information visit www.meteorserver.org
29     #
30     ###############################################################################
31    
32     package Meteor::Syslog;
33     ###############################################################################
34    
35     use strict;
36     use Sys::Syslog;
37    
38     ###############################################################################
39     # Configuration
40     ###############################################################################
41    
42     $Meteor::Syslog::DEFAULT_FACILITY='daemon';
43 andrew.betts 62
44     $Meteor::Syslog::_lasttimestamp=0;
45     $Meteor::Syslog::_lasttimestring="";
46 knops.gerd 11 $Meteor::Syslog::_open=0; # set to 1 by _open
47    
48     ###############################################################################
49     # Implementation
50     ###############################################################################
51     sub ::syslog {
52    
53 knops.gerd 47 my $debug=$::CONF{'Debug'};
54    
55     my $priority=shift;
56     return if($priority eq 'debug' && !$debug);
57    
58     my $format=shift;
59     my @args=@_;
60    
61     if($format eq '')
62 knops.gerd 11 {
63 knops.gerd 47 my $txt=join("\t",@args);
64     $format='%s';
65     @args=($txt);
66     }
67    
68     my $facility=$::CONF{'SyslogFacility'} || $Meteor::Syslog::DEFAULT_FACILITY;
69    
70     if($debug || $facility eq 'none')
71     {
72 knops.gerd 11 $format=~s/\%m/$!/g;
73 andrew.betts 62
74     my $time = time;
75     if ($::CONF{'LogTimeFormat'} ne 'unix') {
76     if ($Meteor::Syslog::_lasttimestamp != time) {
77     $Meteor::Syslog::_lasttimestring = localtime(time);
78     $Meteor::Syslog::_lasttimestamp = time;
79     }
80     $time = $Meteor::Syslog::_lasttimestring;
81     }
82    
83 andrew.betts 50 print STDERR "$time\t$priority\t";
84     print STDERR sprintf($format,@args);
85 knops.gerd 11 print STDERR "\n" unless(substr($format,-1) eq "\n");
86    
87     return;
88     }
89    
90     unless($Meteor::Syslog::_open)
91     {
92     my $facility=$::CONF{'SyslogFacility'} || $Meteor::Syslog::DEFAULT_FACILITY;
93     openlog($::PGM,0,$facility);
94     $Meteor::Syslog::_open=1;
95     }
96    
97 knops.gerd 47 syslog($priority,$format,@args);
98 knops.gerd 11 }
99    
100     sub myWarn {
101     local $SIG{'__DIE__'}='';
102     local $SIG{'__WARN__'}='';
103    
104     &::syslog('warning',$_[0]);
105     }
106    
107     sub myDie {
108     local $SIG{'__DIE__'}='';
109     local $SIG{'__WARN__'}='';
110    
111     my $inEval=0;
112     my $i=0;
113     my $sub;
114     while((undef,undef,undef,$sub)=caller(++$i))
115     {
116     $inEval=1, last if $sub eq '(eval)';
117     }
118    
119     unless($inEval)
120     {
121     &::syslog('err',$_[0]);
122     $Meteor::Socket::NO_WARN_ON_CLOSE=1;
123     exit;
124     }
125     }
126    
127     1;
128 andrew.betts 3 ############################################################################EOF

  ViewVC Help
Powered by ViewVC 1.1.26