Skip to content

Commit c753d25

Browse files
committed
make common log_setattr function
Signed-off-by: Zen <[email protected]>
1 parent 7f4fe78 commit c753d25

File tree

3 files changed

+23
-28
lines changed

3 files changed

+23
-28
lines changed

src/zenlib/logging/classlogger.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
__author__ = "desultory"
22
__version__ = "2.1.0"
33

4-
from .utils import add_handler_if_not_exists, log_init
4+
from .utils import add_handler_if_not_exists, log_init, log_setattr
55

66
from logging import Logger, getLogger
77

@@ -21,22 +21,12 @@ def __init__(self, *args, **kwargs):
2121
# Log class init if _log_init is passed
2222
log_init(self, args, kwargs)
2323

24+
# add setattr logging
25+
setattr(self, "__setattr__", log_setattr)
26+
2427
if super().__class__.__class__ is not type:
2528
super().__init__(*args, **kwargs)
2629

27-
def __setattr__(self, name, value):
28-
""" Add logging to setattr. """
29-
super().__setattr__(name, value)
30-
31-
# Check if the logger is defined
32-
if not hasattr(self, 'logger') or not isinstance(self.logger, Logger):
33-
return
34-
35-
elif isinstance(value, list) or isinstance(value, dict) or isinstance(value, str) and "\n" in value:
36-
self.logger.log(5, "Setattr '%s' to:\n%s" % (name, value))
37-
else:
38-
self.logger.log(5, "Setattr '%s' to: %s" % (name, value))
39-
4030
def __setitem__(self, name, value):
4131
""" Add logging to dict setitem. """
4232
if hasattr(super(), '__setitem__'):

src/zenlib/logging/loggify.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
__author__ = "desultory"
22
__version__ = "2.4.0"
33

4-
from .utils import add_handler_if_not_exists, log_init
4+
from .utils import add_handler_if_not_exists, log_init, log_setattr
55

66
from logging import Logger, getLogger
77

@@ -22,20 +22,10 @@ def __init__(self, *args, **kwargs):
2222
# Log class init if _log_init is passed
2323
log_init(self, args, kwargs, cls)
2424

25-
super().__init__(*args, **kwargs)
26-
27-
def __setattr__(self, name, value):
28-
""" Add logging to setattr. """
29-
super().__setattr__(name, value)
25+
# Add setattr logging
26+
setattr(self, "__setattr__", log_setattr)
3027

31-
# Check if the logger is defined
32-
if not isinstance(self.logger, Logger):
33-
raise ValueError("The logger is not defined")
34-
35-
if isinstance(value, list) or isinstance(value, dict) or isinstance(value, str) and "\n" in value:
36-
self.logger.log(5, "Setattr '%s' to:\n%s" % (name, getattr(self, name)))
37-
else:
38-
self.logger.log(5, "Setattr '%s' to: %s" % (name, getattr(self, name)))
28+
super().__init__(*args, **kwargs)
3929

4030
ClassLogger.__name__ = cls.__name__
4131
ClassLogger.__module__ = cls.__module__

src/zenlib/logging/utils.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from logging import Logger
2+
13
def _logger_has_handler(logger):
24
""" Checks if a logger or its parents has a handler already """
35
while logger:
@@ -38,3 +40,16 @@ def log_init(self, args, kwargs, cls=None):
3840

3941
if class_version := getattr(cls, '__version__', None):
4042
logger.info("[%s] Class version: %s" % (class_name, class_version))
43+
44+
def log_setattr(self, name, value):
45+
""" Logs when an attribute is set """
46+
super().__setattr__(name, value)
47+
# check if the logger is defined
48+
if not isinstance(self.logger, Logger):
49+
raise ValueError("Logger is not defined")
50+
51+
# Log containers or strings with newlines on a new line
52+
if isinstance(value, list) or isinstance(value, dict) or isinstance(value, str) and "\n" in value:
53+
self.logger.log(5, "Setattr '%s' to:\n%s" % (name, getattr(self, name)))
54+
else:
55+
self.logger.log(5, "Setattr '%s' to: %s" % (name, getattr(self, name)))

0 commit comments

Comments
 (0)