### Godot version

v4.1.beta.custom_build [ea6a141ff]

### System information

Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 (NVIDIA; 30.0.15.1403) - Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (8 Threads)

### Issue description

I noticed editor log misbehaving when a text is being printed. It seems to be mostly noticeable (or exclusive to?) when collapsing of duplicate messages is enabled.

https://github.com/godotengine/godot/assets/2223172/4ccfaa70-8991-4f5d-95ec-c732600b82ec

It looks like the log rebuilds from scratch with every message. If it had already some content, the text might be printed faster than it appears, causing it to be unreadable:

https://github.com/godotengine/godot/assets/2223172/6b69d308-37f1-4d8f-b47c-09f2e42eda43


### Steps to reproduce

```GDScript
func _process(delta: float) -> void:
	print("spam")
```

### Minimal reproduction project

N/A
void push_bold_italics();
	void push_italics();
	void push_mono();
	void push_color(const Color &p_color);
	void push_outline_color(const Color &p_color);
	void push_underline();
	void push_strikethrough();
	void push_paragraph(HorizontalAlignment p_alignment, Control::TextDirection p_direction = Control::TEXT_DIRECTION_INHERITED, const String &p_language = "", TextServer::StructuredTextParser p_st_parser = TextServer::STRUCTURED_TEXT_DEFAULT, BitField<TextServer::JustificationFlag> p_jst_flags = TextServer::JUSTIFICATION_WORD_BOUND | TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_SKIP_LAST_LINE | TextServer::JUSTIFICATION_DO_NOT_SKIP_SINGLE_LINE, const PackedFloat32Array &p_tab_stops = PackedFloat32Array());
	void push_indent(int p_level);
	void push_list(int p_level, ListType p_list, bool p_capitalize, const String &p_bullet = String::utf8("•"));
	void push_meta(const Variant &p_meta);
	void push_hint(const String &p_string);
	void push_table(int p_columns, InlineAlignment p_alignment = INLINE_ALIGNMENT_TOP, int p_align_to_row = -1);
	void push_fade(int p_start_index, int p_length);
	void push_shake(int p_strength, float p_rate, bool p_connected);
	void push_wave(float p_frequency, float p_amplitude, bool p_connected);
	void push_tornado(float p_frequency, float p_radius, bool p_connected);
	void push_rainbow(float p_saturation, float p_value, float p_frequency);
	void push_bgcolor(const Color &p_color);
	void push_fgcolor(const Color &p_color);
	void push_customfx(Ref<RichTextEffect> p_custom_effect, Dictionary p_environment);
	void set_table_column_expand(int p_column, bool p_expand, int p_ratio = 1);
	void set_cell_row_background_color(const Color &p_odd_row_bg, const Color &p_even_row_bg);
	void set_cell_border_color(const Color &p_color);
	void set_cell_size_override(const Size2 &p_min_size, const Size2 &p_max_size);
	void set_cell_padding(const Rect2 &p_padding);
	int get_current_table_column() const;
	void push_cell();
	void pop();
	void clear();