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

Contents of /googlecode.com/svn/trunk/Meteor/Syslog.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 47 - (show 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 #!/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 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 {
61 my $txt=join("\t",@args);
62
63 $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 $format=~s/\%m/$!/g;
72
73 my $time=time;
74
75 print STDERR "$time\t$::PGM($priority): ";
76 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 syslog($priority,$format,@args);
90 }
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 ############################################################################EOF

  ViewVC Help
Powered by ViewVC 1.1.26