/[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

Contents of /trunk/Meteor/Syslog.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 67 - (show annotations)
Sat Mar 28 01:42:07 2009 UTC (15 years ago) by dpavlin
File size: 3360 byte(s)
correct trunk
1 #!/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
44 $Meteor::Syslog::_lasttimestamp=0;
45 $Meteor::Syslog::_lasttimestring="";
46 $Meteor::Syslog::_open=0; # set to 1 by _open
47
48 ###############################################################################
49 # Implementation
50 ###############################################################################
51 sub ::syslog {
52
53 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 {
63 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 $format=~s/\%m/$!/g;
73
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 print STDERR "$time\t$priority\t";
84 print STDERR sprintf($format,@args);
85 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 syslog($priority,$format,@args);
98 }
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 ############################################################################EOF

  ViewVC Help
Powered by ViewVC 1.1.26