diff options
author | robot-piglet <[email protected]> | 2025-10-10 09:49:38 +0300 |
---|---|---|
committer | robot-piglet <[email protected]> | 2025-10-10 09:59:05 +0300 |
commit | 172bf557598ad5d2a67c1d18ff9d4857a6b40722 (patch) | |
tree | dcbecbea7c838f7886f5117ec12fd8c2f95470d5 | |
parent | 5800ea97e3d8e2725f2dce746ad6cb3823a20784 (diff) |
Intermediate changes
commit_hash:1e90ae27ead5f9c541093193f4c59cafb203e433
-rw-r--r-- | yt/python/yt/logger.py | 18 |
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] |