summaryrefslogtreecommitdiff
path: root/crocoite/logger.py
diff options
context:
space:
mode:
Diffstat (limited to 'crocoite/logger.py')
-rw-r--r--crocoite/logger.py27
1 files changed, 9 insertions, 18 deletions
diff --git a/crocoite/logger.py b/crocoite/logger.py
index cddc42d..ac389ca 100644
--- a/crocoite/logger.py
+++ b/crocoite/logger.py
@@ -34,6 +34,8 @@ from enum import IntEnum
from pytz import utc
+from .util import StrJsonEncoder
+
class Level(IntEnum):
DEBUG = 0
INFO = 1
@@ -41,9 +43,9 @@ class Level(IntEnum):
ERROR = 3
class Logger:
- def __init__ (self, consumer=[], bindings={}):
- self.bindings = bindings
- self.consumer = consumer
+ def __init__ (self, consumer=None, bindings=None):
+ self.bindings = bindings or {}
+ self.consumer = consumer or []
def __call__ (self, level, *args, **kwargs):
if not isinstance (level, Level):
@@ -102,24 +104,13 @@ class PrintConsumer (Consumer):
sys.stderr.flush ()
return kwargs
-class JsonEncoder (json.JSONEncoder):
- def default (self, obj):
- if isinstance (obj, datetime):
- return obj.isoformat ()
-
- # make sure serialization always succeeds
- try:
- return json.JSONEncoder.default(self, obj)
- except TypeError:
- return str (obj)
-
class JsonPrintConsumer (Consumer):
- def __init__ (self, minLevel=Level.INFO):
+ def __init__ (self, minLevel=Level.DEBUG):
self.minLevel = minLevel
def __call__ (self, **kwargs):
if kwargs['level'] >= self.minLevel:
- json.dump (kwargs, sys.stdout, cls=JsonEncoder)
+ json.dump (kwargs, sys.stdout, cls=StrJsonEncoder)
sys.stdout.write ('\n')
sys.stdout.flush ()
return kwargs
@@ -130,12 +121,12 @@ class DatetimeConsumer (Consumer):
return kwargs
class WarcHandlerConsumer (Consumer):
- def __init__ (self, warc, minLevel=Level.INFO):
+ def __init__ (self, warc, minLevel=Level.DEBUG):
self.warc = warc
self.minLevel = minLevel
def __call__ (self, **kwargs):
if kwargs['level'] >= self.minLevel:
- self.warc._writeLog (json.dumps (kwargs, cls=JsonEncoder))
+ self.warc._writeLog (json.dumps (kwargs, cls=StrJsonEncoder))
return kwargs