From 7c442b132fd7caf32e5e63dd8f6c507a869d215c Mon Sep 17 00:00:00 2001 From: ISHIKAWA Mutsumi Date: Wed, 23 Jun 2010 17:19:08 +0900 Subject: [PATCH] Log related cleanup Sys::Syslog check and if not installed fall back to file writer --- keitairc | 3 +-- lib/Keitairc/Config.pm | 24 ++++++++++++------------ lib/Keitairc/Log.pm | 36 +++++++++++++++++++++++------------- 3 files changed, 36 insertions(+), 27 deletions(-) diff --git a/keitairc b/keitairc index dea8e17..7966a82 100755 --- a/keitairc +++ b/keitairc @@ -35,9 +35,8 @@ use Keitairc::Log; use strict; use warnings; -our $log = new Keitairc::Log(); our $cf = new Keitairc::Config({version => '2.1a1', argv => \@ARGV}); -$log->config($cf); +our $log = new Keitairc::Log({config => $cf}); our $ib = new Keitairc::IrcBuffer({history => $cf->web_lines()}); our $sm = new Keitairc::SessionManager({default_ttl => $cf->session_ttl()}); our $pl = new Keitairc::Plugins({config => $cf}); diff --git a/lib/Keitairc/Config.pm b/lib/Keitairc/Config.pm index f231193..9a498c5 100644 --- a/lib/Keitairc/Config.pm +++ b/lib/Keitairc/Config.pm @@ -92,7 +92,7 @@ sub new{ $me->debug(0); $me->daemonize(0); $me->webkit_newui(1); - $me->log('stdio'); + $me->log('file'); if(-r '/etc/keitairc'){ $me->file('/etc/keitairc'); @@ -111,31 +111,31 @@ sub new{ $me->args(\@argv); if(defined $me->show_newmsgonly()){ - $::log->log('show_newmsgonly has obsoleted from keitairc 2.0'); + warn('show_newmsgonly has obsoleted from keitairc 2.0'); } if(defined $me->web_username()){ - $::log->log('web_username has obsoleted from keitairc 2.0'); + warn('web_username has obsoleted from keitairc 2.0'); } if(defined $me->use_cookie()){ - $::log->log('use_cookie has obsoleted from keitairc 2.0'); + warn('use_cookie has obsoleted from keitairc 2.0'); } if(defined $me->au_pcsv()){ - $::log->log('au_pcsv has obsoleted from keitairc 2.0'); + warn('au_pcsv has obsoleted from keitairc 2.0'); } if(!defined($me->irc_nick()) || !length($me->irc_nick())){ - $::log->log_die('irc_nick does not specified'); + die('irc_nick does not specified'); } if(!defined($me->irc_username()) || !length($me->irc_username())){ - $::log->log_die('irc_username does not specified'); + die('irc_username does not specified'); } if(!defined($me->irc_server()) || !length($me->irc_server())){ - $::log->log_die('irc_server does not specified'); + die('irc_server does not specified'); } if(!defined($me->web_listen_port()) || !length($me->web_listen_port())){ @@ -143,11 +143,11 @@ sub new{ } if(!defined($me->web_host()) || !length($me->web_host())){ - $::log->log_die('web_host does not specified'); + die('web_host does not specified'); } if(!defined($me->web_password()) || !length($me->web_password())){ - $::log->log_die('web_password does not specified'); + die('web_password does not specified'); } $me; @@ -159,11 +159,11 @@ sub file{ my $file = shift; if(-r $file){ $me->SUPER::file($file); - $::log->log("Loaded configuration file: $file") + warn("Loaded configuration file: $file") unless $me->silent_config(); return; } - $::log->log("$file does not exist"); + warn("$file does not exist"); } ################################################################ diff --git a/lib/Keitairc/Log.pm b/lib/Keitairc/Log.pm index 81a171c..7c10022 100644 --- a/lib/Keitairc/Log.pm +++ b/lib/Keitairc/Log.pm @@ -8,9 +8,6 @@ package Keitairc::Log; use Keitairc::Config; use POSIX qw(strftime locale_h); -use Keitairc::Log::Syslog; -use Keitairc::Log::File; -use Keitairc::Log::Stdio; use strict; use warnings; @@ -18,13 +15,16 @@ sub new { my ($proto, $arg) = @_; my $me = {}; + bless $me; + if (defined $arg->{config}) { $me->config($arg->{config}); } else { + require Keitairc::Log::Stdio; $me->{writer} = new Keitairc::Log::Stdio(); } - bless $me; + return $me; } sub config { @@ -32,12 +32,28 @@ sub config { $me->{Config} = $cf; ($me->{type}, undef) = split(':', $me->{Config}->log(), 2); + my $fallback = 0; if ($me->{type} =~ /^syslog$/i) { - $me->{writer} = new Keitairc::Log::Syslog({config => $me->{Config}}); - } elsif ($me->{type} =~ /^file$/i ) { + if (eval "use Sys::Syslog") { + require Keitairc::Log::Syslog; + $me->{writer} = new Keitairc::Log::Syslog({config => $me->{Config}}); + } else { + # force fallback to file writer + $me->{type} = 'file'; + $fallback = 1; + } + } + + if ($me->{type} =~ /^file$/i ) { + require Keitairc::Log::File; $me->{writer} = new Keitairc::Log::File({config => $me->{Config}}); + } else { + require Keitairc::Log::Stdio; + $me->{writer} = new Keitairc::Log::Stdio({config => $me->{Config}}) if (!defined $me->{writer} || !$me->{writer}); + } + if ($fallback) { + $me->log_error('Sys::Syslog is missing, fallback to file log writer'); } - $me->{writer} = new Keitairc::Log::Stdio({config => $me->{Config}}) if (!defined $me->{writer} || !$me->{writer}); } sub log_access { @@ -83,10 +99,4 @@ sub log_debug { $me->{writer}->log_debug($me->_format($m)); } -sub log_die { - my ($me, $m) = @_; - $me->{writer}->log_error($me->_format($m)); - exit 1; -} - 1; -- 2.11.0