towers are constructable
[scpubgit/Clifton.git] / lib / App / Clifton / Launcher.pm
index ba8356f..1015edc 100644 (file)
@@ -11,7 +11,7 @@ has config_file => (is => 'ro', required => 1);
 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(
@@ -23,7 +23,13 @@ sub run {
       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;