Compare commits

..

2 Commits

Author SHA1 Message Date
Clemens Schwaighofer
765cc061c1 v0.22.1: Log update with closing queue on exit or abort 2025-08-05 10:33:55 +09:00
Clemens Schwaighofer
80319385f0 Add Log exist queue clean up if queue is set
to avoid hung threads on errors
2025-08-05 10:32:33 +09:00
3 changed files with 17 additions and 3 deletions

View File

@@ -1,7 +1,7 @@
# MARK: Project info
[project]
name = "corelibs"
version = "0.22.0"
version = "0.22.1"
description = "Collection of utils for Python scripts"
readme = "README.md"
requires-python = ">=3.13"

View File

@@ -10,6 +10,7 @@ import logging
from datetime import datetime
import time
from pathlib import Path
import atexit
from typing import MutableMapping, TextIO, TypedDict, Any, TYPE_CHECKING, cast
from corelibs.logging_handling.logging_level_handling.logging_level import LoggingLevel
from corelibs.string_handling.text_colors import Colors
@@ -121,6 +122,9 @@ class LogParent:
self.log_queue: 'Queue[str] | None' = None
self.handlers: dict[str, Any] = {}
def __del__(self):
self._cleanup()
# FIXME: we need to add a custom formater to add stack level listing if we want to
# Important note, although they exist, it is recommended to use self.logger.NAME directly
# so that the correct filename, method and row number is set
@@ -282,6 +286,15 @@ class LogParent:
return False
return True
def _cleanup(self):
"""cleanup for any open queues in case we have an abort"""
if not self.log_queue:
return
self.flush()
# Close the queue properly
self.log_queue.close()
self.log_queue.join_thread()
# MARK: log level handling
def set_log_level(self, handler_name: str, log_level: LoggingLevel) -> bool:
"""
@@ -634,6 +647,7 @@ class Log(LogParent):
if log_queue is None:
return
self.log_queue = log_queue
atexit.register(self._cleanup)
self.listener = logging.handlers.QueueListener(
self.log_queue,
*self.handlers.values(),

4
uv.lock generated
View File

@@ -1,5 +1,5 @@
version = 1
revision = 2
revision = 3
requires-python = ">=3.13"
[[package]]
@@ -44,7 +44,7 @@ wheels = [
[[package]]
name = "corelibs"
version = "0.21.0"
version = "0.22.0"
source = { editable = "." }
dependencies = [
{ name = "jmespath" },