def _convert_fields(self, fields: Dict[str, Any]) -> List[GLib.LogField]:
        """
        Convert a record fields to an list of :py:class:`GLib.LogField`.

        :param fields: The fields to convert.
        :returns: The converted fields.
        """
        log_fields: List[GLib.LogField] = []
        for key, value in fields.items():
            # TODO: Convert GLib Variants
            if isinstance(value, str):
                length = -1
                cvalue = ctypes.create_string_buffer(value.encode('utf-8'))
            else:
                if not isinstance(value, bytes):
                    value = str(value).encode('utf-8')
                length = len(value)
                cvalue = ctypes.create_string_buffer(value, len(value))
            log_field = GLib.LogField()
            log_field.key = key
            log_field.length = length
            log_field.value = ctypes.addressof(cvalue)
            # Keep cvalue buffer alive until after logging (using) it
            setattr(log_field, '_p2g_value_ctypes', cvalue)
            log_fields.append(log_field)
        return log_fields