From 84af66aba26d2088d5d95c240d176f3edaf17b58 Mon Sep 17 00:00:00 2001 From: Darkelarious Date: Sun, 5 Mar 2017 22:19:52 +0100 Subject: Split error logging over multiple error types --- README | 1 + lib/MasterServer/Core/Logging.pm | 41 +++++++++++++++++++++++++++++++++- lib/MasterServer/TCP/Syncer.pm | 2 +- lib/MasterServer/TCP/UCCAppletQuery.pm | 2 +- 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/README b/README index 8bb92dc..1d591c0 100755 --- a/README +++ b/README @@ -30,6 +30,7 @@ REQUIREMENTS AnyEvent AnyEvent::Handle::UDP IP::Country::Fast + Switch - screen (or another terminal multiplexer, optional) INSTALL diff --git a/lib/MasterServer/Core/Logging.pm b/lib/MasterServer/Core/Logging.pm index 5aaf683..e8631de 100755 --- a/lib/MasterServer/Core/Logging.pm +++ b/lib/MasterServer/Core/Logging.pm @@ -3,10 +3,49 @@ package MasterServer::Core::Logging; use strict; use warnings; +use Switch; use POSIX qw/strftime/; use Exporter 'import'; -our @EXPORT = qw| log |; +our @EXPORT = qw| log error |; + +################################################################################ +## Split up errors in multiple log types for suppressing +## args: $self, message +################################################################################ +sub error { + my ($self, $error, $instigator) = @_; + + # which error? + switch ($error) { + + # connection timed out + case m/Connection timed out/i { + $self->log("timeout", "on $instigator."); + } + + # connection reset by peer + case m/Connection reset by peer/i { + $self->log("reset", "on $instigator."); + } + + # connection refused + case m/Connection refused/i { + $self->log("refused", "on $instigator."); + } + + # no such device or address + case m/No such device or address/i { + $self->log("nodevice", "on $instigator."); + } + + # if all else fails + else { + $self->log("error", "$error on $instigator."); + } + } +} + ################################################################################ ## Log to file and print to screen. diff --git a/lib/MasterServer/TCP/Syncer.pm b/lib/MasterServer/TCP/Syncer.pm index bfe3d78..3e903e0 100755 --- a/lib/MasterServer/TCP/Syncer.pm +++ b/lib/MasterServer/TCP/Syncer.pm @@ -30,7 +30,7 @@ sub sync_with_master { connect => [$ms->{ip} => $ms->{tcp}], timeout => 4, poll => 'r', - on_error => sub {$self->log("error","$! on $ms->{ip} $ms->{tcp}"); $handle->destroy;}, + on_error => sub {$self->error($!, "$ms->{ip}:$ms->{port}"); $handle->destroy;}, on_eof => sub {$self->process_sync_list($sync_list, $ms); $handle->destroy;}, on_read => sub { # receive and clear buffer diff --git a/lib/MasterServer/TCP/UCCAppletQuery.pm b/lib/MasterServer/TCP/UCCAppletQuery.pm index e3eb587..7637e9f 100755 --- a/lib/MasterServer/TCP/UCCAppletQuery.pm +++ b/lib/MasterServer/TCP/UCCAppletQuery.pm @@ -29,7 +29,7 @@ sub query_applet { connect => [$ms->{ip} => $ms->{port}], timeout => 5, poll => 'r', - on_error => sub {$self->log("error", "$! on $ms->{ip}:$ms->{port}."); $handle->destroy;}, + on_error => sub {$self->error($!, "$ms->{ip}:$ms->{port}"); $handle->destroy;}, on_eof => sub {$self->process_ucc_applet_query($master_list, $ms); $handle->destroy;}, on_read => sub { -- cgit v1.2.3