diff options
| author | Darkelarious <darkelarious@333networks.com> | 2017-03-05 22:19:52 +0100 |
|---|---|---|
| committer | Darkelarious <darkelarious@333networks.com> | 2017-03-05 22:19:52 +0100 |
| commit | 84af66aba26d2088d5d95c240d176f3edaf17b58 (patch) | |
| tree | fe427eab0ed27238e725fa045ce4420e37063d7c | |
| parent | 1bdd05e9167879eb218f61af8cad6e31d399674c (diff) | |
| download | MasterServer-Perl-84af66aba26d2088d5d95c240d176f3edaf17b58.tar.gz MasterServer-Perl-84af66aba26d2088d5d95c240d176f3edaf17b58.zip | |
Split error logging over multiple error types
| -rwxr-xr-x | README | 1 | ||||
| -rwxr-xr-x | lib/MasterServer/Core/Logging.pm | 41 | ||||
| -rwxr-xr-x | lib/MasterServer/TCP/Syncer.pm | 2 | ||||
| -rwxr-xr-x | lib/MasterServer/TCP/UCCAppletQuery.pm | 2 |
4 files changed, 43 insertions, 3 deletions
@@ -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 { |
