diff --git a/deps.md b/deps.md index 448691a..51b844c 100644 --- a/deps.md +++ b/deps.md @@ -2,4 +2,5 @@ - pyepics - bokeh - colorcet +- logzero diff --git a/kabuki/buki.py b/kabuki/buki.py index 22d6e79..a39f400 100644 --- a/kabuki/buki.py +++ b/kabuki/buki.py @@ -1,4 +1,5 @@ from weakref import WeakSet #TODO: for debugging +from logzero import logger as log from bokeh.layouts import column, row @@ -33,7 +34,7 @@ class Object: if self.parent is not None: self.parent.remove(self) else: - print(self, "has no parent") + log.debug(f"{self} has no parent") def __repr__(self): return repr(self.layout) @@ -75,7 +76,7 @@ class Container(Object): self.children.remove(obj) self.layout.children.remove(obj.layout) if not self.children: - print("Delete emptied container", self) + log.debug(f"Delete emptied container {self}") self.delete() def delete(self): diff --git a/kabuki/cache.py b/kabuki/cache.py index 733d541..27c0ba0 100644 --- a/kabuki/cache.py +++ b/kabuki/cache.py @@ -2,6 +2,7 @@ import itertools from collections import deque from time import time from weakref import WeakSet #TODO: for debugging +from logzero import logger as log class Cache: @@ -72,7 +73,7 @@ class CacheView: def set_size(self, size): self.size = size if size > self.cache.size: - print("Adjust cache size to view size...") + log.debug("Adjust cache size to view size...") self.cache.set_size(size) diff --git a/kabuki/director.py b/kabuki/director.py index 4c246fd..56057b4 100644 --- a/kabuki/director.py +++ b/kabuki/director.py @@ -1,4 +1,5 @@ from random import choice +from logzero import logger as log from bokeh.layouts import column from bokeh.models import Spacer, TextInput @@ -42,7 +43,7 @@ class Director: def add_pvs(self, new): new = new.upper() # PV names are all upper case grid = break_apart(new) - print(normalized_string(grid)) + log.debug(normalized_string(grid)) self.add_pvs_grid(grid) @@ -57,34 +58,34 @@ class Director: def make_pvs_row(self, pvnames): container = Row() for n in pvnames: - print("Add PV:", n) + log.info(f"Add PV: {n}") try: a = Actor(n) except Exception as e: tn = type(e).__name__ - print(f"failed due to: {tn}: {e}") + log.warning(f"failed due to: {tn}: {e}") else: self.add_actor(a, container) return container def add_actor(self, a, container): - print("Add:", a) - print("Connect close button") + log.info(f"Add: {a}") + log.debug("Connect close button") a.frm.on_click_close(lambda: self.remove_actor(a, container)) - print("Add plot") + log.debug("Add plot") container.append(a.frm) - print("Add update") + log.debug("Add update") self.updates.append(a.update) def remove_actor(self, a, container): - print("Remove:", a) - print("Remove update") + log.info(f"Remove: {a}") + log.debug("Remove update") self.updates.remove(a.update) - print("Remove plot") + log.debug("Remove plot") container.remove(a.frm) - print("Delete") + log.debug("Delete") a.delete() diff --git a/kabuki/logcfg.py b/kabuki/logcfg.py new file mode 100644 index 0000000..04d233e --- /dev/null +++ b/kabuki/logcfg.py @@ -0,0 +1,9 @@ +import os +import logzero + + +LOGLEVEL = os.environ.get("LOGLEVEL", "WARNING").upper() +logzero.loglevel(LOGLEVEL) + + + diff --git a/kabuki/utils.py b/kabuki/utils.py index 0ecd7a3..1fc42a2 100644 --- a/kabuki/utils.py +++ b/kabuki/utils.py @@ -1,16 +1,13 @@ +from logzero import logger as log + def bind(obj, handler): obj.on_change("value", cb(handler)) def cb(handler): - def wrapper(_attr, _old, new): - handler(new) - return wrapper - -def cb_dbg(handler): fn = handler.__name__ def wrapper(attr, old, new): - print(f"Callback {fn}: attribute {repr(attr)} changed from {repr(old)} to {repr(new)}") + log.debug(f"Callback {fn}: attribute {repr(attr)} changed from {repr(old)} to {repr(new)}") handler(new) return wrapper diff --git a/main.py b/main.py index cabec64..7144b25 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ from kabuki.cache import print_caches from kabuki.director import Director +import kabuki.logcfg app = Director()