client_id=self.client_id)
                 self._client_trigger('_on_connect')
             except IrcConnAbortException as e:
-                self._log.alert(str(e))
+                self._log.add(str(e), alert=True)
             except Exception as e:  # pylint: disable=broad-exception-caught
                 self._put(ExceptionEvent(e))
 
              ) -> None:
         'Send line-separator-delimited message over socket.'
         if not self.conn:
-            self._log.alert('cannot send, connection seems closed',
-                            stream=stream)
+            self._log.add('cannot send, connection seems closed', alert=True,
+                          stream=stream)
             return
         self.conn.send(msg)
         if to_log:
 
     def on_handled_loop_exception(self, e: IrcConnAbortException) -> None:
         'Gracefully handle broken connection.'
-        self._log.alert(f'connection broken: {e}')
+        self._log.add(f'connection broken: {e}', alert=True)
         self.close()
 
     def handle_msg(self, msg: IrcMessage) -> None:
                     self.send(IrcMessage('AUTHENTICATE', (auth,)))
             case '903' | '904':
                 if msg.verb == '904':
-                    self._log.alert('SASL authentication failed')
+                    self._log.add('SASL authentication failed', alert=True)
                 self._caps.challenge('END')
 
 
 
     def __init__(self, to_call: Callable[[str], None]) -> None:
         self._to_call = to_call
 
-    def add(self, msg: str, prefix: str = _LOG_PREFIX_DEFAULT, **kwargs
+    def add(self,
+            msg: str,
+            prefix: str = _LOG_PREFIX_DEFAULT,
+            alert=False,
+            **kwargs
             ) -> None:
         'Add msg to log.'
+        if alert:
+            prefix = _LOG_PREFIX_ALERT + prefix
         time = str(datetime.now())[11:19]
         self._to_call(f'{time} {prefix}{msg}', **kwargs)
-
-    def alert(self, msg: str, **kwargs) -> None:
-        'Add msg prefixed with _LOG_PREFIX_ALERT to log.'
-        self.add(msg, prefix=_LOG_PREFIX_ALERT, **kwargs)
 
         elif len(typed_in) == 1:
             self.window.prompt.insert(typed_in)
         else:
-            self._log.alert(f'unknown keyboard input: {typed_in}')
+            self._log.add(f'unknown keyboard input: {typed_in}', alert=True)
         self.redraw_affected()
 
     def cmd__prompt_enter(self) -> None:
         else:
             alert = 'not prefixed by /'
         if alert:
-            self._log.alert(f'invalid prompt command: {alert}')
+            self._log.add(f'invalid prompt command: {alert}', alert=True)
 
     def cmd__help(self) -> None:
         'Print available commands.'