summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2025-10-10 09:49:38 +0300
committerrobot-piglet <[email protected]>2025-10-10 09:59:05 +0300
commit172bf557598ad5d2a67c1d18ff9d4857a6b40722 (patch)
treedcbecbea7c838f7886f5117ec12fd8c2f95470d5
parent5800ea97e3d8e2725f2dce746ad6cb3823a20784 (diff)
Intermediate changes
commit_hash:1e90ae27ead5f9c541093193f4c59cafb203e433
-rw-r--r--yt/python/yt/logger.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/yt/python/yt/logger.py b/yt/python/yt/logger.py
index d3d5c933aba..9af8948d833 100644
--- a/yt/python/yt/logger.py
+++ b/yt/python/yt/logger.py
@@ -6,9 +6,15 @@ except ImportError:
yatest_common = None
import functools
+import hashlib
import logging
import os
import re
+import time
+
+LOG_ONCE_BUFF = {}
+MAX_BUFF_LEN = 1000
+BUFF_CLEANING_LEN = 10
def set_log_level_from_config(logger):
@@ -126,3 +132,15 @@ else:
def log(level, msg, *args, **kwargs):
LOGGER.log(level, msg, *args, **kwargs)
+
+
+def log_once(level, msg, *args, **kwargs):
+ msg_hash = hashlib.sha256(msg.encode('utf-8')).hexdigest()
+ if msg_hash not in LOG_ONCE_BUFF:
+ LOGGER.log(level, msg, *args, **kwargs)
+ LOG_ONCE_BUFF[msg_hash] = time.time()
+
+ if len(LOG_ONCE_BUFF) >= MAX_BUFF_LEN:
+ cleaning_items = sorted(LOG_ONCE_BUFF.items(), key=lambda i: i[1])[:BUFF_CLEANING_LEN]
+ for msg, msg_time in cleaning_items:
+ del LOG_ONCE_BUFF[msg]