def METHOD_NAME(self, **kwargs):
    """Logs the action. Subclasses can call this if the class doesn't
    have `FormMixin`. If keyword arguments are provided, they override the
    keyword arguments provided by `get_action_log_fields()`, except for
    `ip_address`, which cannot be overridden.
    """
    ip_address = get_ip_address(self.request)
    action_log_fields = self.get_action_log_fields()
    action_log_fields.update(kwargs)
    log = ActionLogEntry.objects.log(ip_address=ip_address, **action_log_fields)
    # Notify the actionlog consumer to broadcast the event
    if self.tournament:
        print('Broadcasting notification of ActionLogEntryConsumer')
        group_name = ActionLogEntryConsumer.group_prefix + "_" + self.tournament.slug
        async_to_sync(get_channel_layer().group_send)(group_name, {
            "type": "send_json",
            "data": log.serialize,
        })