added logging via logzero; read loglevel from env variable LOGLEVEL

This commit is contained in:
2021-06-15 18:14:38 +02:00
parent 8a909e4664
commit 21a189ea8a
7 changed files with 31 additions and 20 deletions

View File

@ -2,4 +2,5 @@
- pyepics - pyepics
- bokeh - bokeh
- colorcet - colorcet
- logzero

View File

@ -1,4 +1,5 @@
from weakref import WeakSet #TODO: for debugging from weakref import WeakSet #TODO: for debugging
from logzero import logger as log
from bokeh.layouts import column, row from bokeh.layouts import column, row
@ -33,7 +34,7 @@ class Object:
if self.parent is not None: if self.parent is not None:
self.parent.remove(self) self.parent.remove(self)
else: else:
print(self, "has no parent") log.debug(f"{self} has no parent")
def __repr__(self): def __repr__(self):
return repr(self.layout) return repr(self.layout)
@ -75,7 +76,7 @@ class Container(Object):
self.children.remove(obj) self.children.remove(obj)
self.layout.children.remove(obj.layout) self.layout.children.remove(obj.layout)
if not self.children: if not self.children:
print("Delete emptied container", self) log.debug(f"Delete emptied container {self}")
self.delete() self.delete()
def delete(self): def delete(self):

View File

@ -2,6 +2,7 @@ import itertools
from collections import deque from collections import deque
from time import time from time import time
from weakref import WeakSet #TODO: for debugging from weakref import WeakSet #TODO: for debugging
from logzero import logger as log
class Cache: class Cache:
@ -72,7 +73,7 @@ class CacheView:
def set_size(self, size): def set_size(self, size):
self.size = size self.size = size
if size > self.cache.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) self.cache.set_size(size)

View File

@ -1,4 +1,5 @@
from random import choice from random import choice
from logzero import logger as log
from bokeh.layouts import column from bokeh.layouts import column
from bokeh.models import Spacer, TextInput from bokeh.models import Spacer, TextInput
@ -42,7 +43,7 @@ class Director:
def add_pvs(self, new): def add_pvs(self, new):
new = new.upper() # PV names are all upper case new = new.upper() # PV names are all upper case
grid = break_apart(new) grid = break_apart(new)
print(normalized_string(grid)) log.debug(normalized_string(grid))
self.add_pvs_grid(grid) self.add_pvs_grid(grid)
@ -57,34 +58,34 @@ class Director:
def make_pvs_row(self, pvnames): def make_pvs_row(self, pvnames):
container = Row() container = Row()
for n in pvnames: for n in pvnames:
print("Add PV:", n) log.info(f"Add PV: {n}")
try: try:
a = Actor(n) a = Actor(n)
except Exception as e: except Exception as e:
tn = type(e).__name__ tn = type(e).__name__
print(f"failed due to: {tn}: {e}") log.warning(f"failed due to: {tn}: {e}")
else: else:
self.add_actor(a, container) self.add_actor(a, container)
return container return container
def add_actor(self, a, container): def add_actor(self, a, container):
print("Add:", a) log.info(f"Add: {a}")
print("Connect close button") log.debug("Connect close button")
a.frm.on_click_close(lambda: self.remove_actor(a, container)) a.frm.on_click_close(lambda: self.remove_actor(a, container))
print("Add plot") log.debug("Add plot")
container.append(a.frm) container.append(a.frm)
print("Add update") log.debug("Add update")
self.updates.append(a.update) self.updates.append(a.update)
def remove_actor(self, a, container): def remove_actor(self, a, container):
print("Remove:", a) log.info(f"Remove: {a}")
print("Remove update") log.debug("Remove update")
self.updates.remove(a.update) self.updates.remove(a.update)
print("Remove plot") log.debug("Remove plot")
container.remove(a.frm) container.remove(a.frm)
print("Delete") log.debug("Delete")
a.delete() a.delete()

9
kabuki/logcfg.py Normal file
View File

@ -0,0 +1,9 @@
import os
import logzero
LOGLEVEL = os.environ.get("LOGLEVEL", "WARNING").upper()
logzero.loglevel(LOGLEVEL)

View File

@ -1,16 +1,13 @@
from logzero import logger as log
def bind(obj, handler): def bind(obj, handler):
obj.on_change("value", cb(handler)) obj.on_change("value", cb(handler))
def cb(handler): def cb(handler):
def wrapper(_attr, _old, new):
handler(new)
return wrapper
def cb_dbg(handler):
fn = handler.__name__ fn = handler.__name__
def wrapper(attr, old, new): 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) handler(new)
return wrapper return wrapper

View File

@ -1,5 +1,6 @@
from kabuki.cache import print_caches from kabuki.cache import print_caches
from kabuki.director import Director from kabuki.director import Director
import kabuki.logcfg
app = Director() app = Director()