/[meteor]/googlecode.com/svn/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 /googlecode.com/svn/trunk/Meteor/Syslog.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 47 - (hide annotations)
Mon Feb 4 21:06:42 2008 UTC (16 years, 2 months ago) by knops.gerd
File size: 3045 byte(s)
• syslog change: If `SyslogFacility` is set to `none`, meteord will not put itself into the background and print all syslog messages with a priority higher than `debug` to standard output. The output will be prefixed with a timestamp (unix time in seconds) and a tab character.

• New syslog messges: joinchannel, leavechannel, document


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    
44     $Meteor::Syslog::_open=0; # set to 1 by _open
45    
46     ###############################################################################
47     # Implementation
48     ###############################################################################
49     sub ::syslog {
50    
51 knops.gerd 47 my $debug=$::CONF{'Debug'};
52    
53     my $priority=shift;
54     return if($priority eq 'debug' && !$debug);
55    
56     my $format=shift;
57     my @args=@_;
58    
59     if($format eq '')
60 knops.gerd 11 {
61 knops.gerd 47 my $txt=join("\t",@args);
62 knops.gerd 11
63 knops.gerd 47 $format='%s';
64     @args=($txt);
65     }
66    
67     my $facility=$::CONF{'SyslogFacility'} || $Meteor::Syslog::DEFAULT_FACILITY;
68    
69     if($debug || $facility eq 'none')
70     {
71 knops.gerd 11 $format=~s/\%m/$!/g;
72    
73 knops.gerd 47 my $time=time;
74    
75     print STDERR "$time\t$::PGM($priority): ";
76 knops.gerd 11 print STDERR sprintf($format,@_);
77     print STDERR "\n" unless(substr($format,-1) eq "\n");
78    
79     return;
80     }
81    
82     unless($Meteor::Syslog::_open)
83     {
84     my $facility=$::CONF{'SyslogFacility'} || $Meteor::Syslog::DEFAULT_FACILITY;
85     openlog($::PGM,0,$facility);
86     $Meteor::Syslog::_open=1;
87     }
88    
89 knops.gerd 47 syslog($priority,$format,@args);
90 knops.gerd 11 }
91    
92     sub myWarn {
93     local $SIG{'__DIE__'}='';
94     local $SIG{'__WARN__'}='';
95    
96     &::syslog('warning',$_[0]);
97     }
98    
99     sub myDie {
100     local $SIG{'__DIE__'}='';
101     local $SIG{'__WARN__'}='';
102    
103     my $inEval=0;
104     my $i=0;
105     my $sub;
106     while((undef,undef,undef,$sub)=caller(++$i))
107     {
108     $inEval=1, last if $sub eq '(eval)';
109     }
110    
111     unless($inEval)
112     {
113     &::syslog('err',$_[0]);
114     $Meteor::Socket::NO_WARN_ON_CLOSE=1;
115     exit;
116     }
117     }
118    
119     1;
120 andrew.betts 3 ############################################################################EOF

  ViewVC Help
Powered by ViewVC 1.1.26