Necnion8 / CraftSwitcher-2

Minecraft Java サーバー 管理システム
3 stars 0 forks source link

サーバーログが一部の行ごとバッファに残らないときがある #28

Open Necnion8 opened 2 weeks ago

Necnion8 commented 2 weeks ago

改行コード(\r\n)を正しく処理した方がいいかもしれない・・・ Spigot 1.8 で /help/tps の出力で試したところ、\r\n の間にカラーコードが入ってくることがあるらしい。

現状

\r\n\n に置換して処理してる => 正しい行を抽出できずに一部の行の内容が失われることに

Necnion8 commented 2 weeks ago

\r + 制御コード? + \n で除外するパッチをここに記しておく 概ね解決できてそうですがまだ /help の行に抜けが現れます。

diff --git a/dncore/extensions/craftswitcher/utils.py b/dncore/extensions/craftswitcher/utils.py
--- a/dncore/extensions/craftswitcher/utils.py  (revision 43445c9b66c1a95c5e119df3f1dccb9e0a085c60)
+++ b/dncore/extensions/craftswitcher/utils.py  (date 1731070344785)
@@ -4,6 +4,7 @@
 import locale
 import logging
 import platform
+import re
 import uuid
 from collections import deque
 from logging import getLogger
@@ -191,7 +192,7 @@
         return self._buffer

     def put_data(self, data: str):
-        buf = (self._buffer + data).replace("\r\n", "\n")
+        buf = re.sub(r"\r(\x1b\[\d*m)?\n", "\\1\n", self._buffer + data)
         if self._max_buffer_size < len(buf):
             buf = buf[-self._max_buffer_size:]
         try: