sub run {
my ($self) = @_;
set_logger(Log::Contextual::SimpleLogger->new({ levels => [ qw(
- info warn debug
+ info warn debug error
) ] }));
my $loop = IO::Async::Loop->new;
my $server = Server->new(
log_info { "Server startup complete" };
});
});
- $loop->loop_forever;
+ while (1) {
+ local $@;
+ last if eval { $loop->loop_forever; 1 };
+ my $error = $@;
+ log_error { "Server exception: ${error}" };
+ }
+ log_info { "Server shut down cleanly" };
}
1;