summaryrefslogtreecommitdiff
path: root/crocoite/logger.py
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2018-12-18 12:34:25 +0100
committerLars-Dominik Braun <lars@6xq.net>2018-12-21 20:28:51 +0100
commit5e444dd6511d97308a84ae9c86ebf14547d01f01 (patch)
tree0852c081163ff3456038fb08ad4e47d0d47a6167 /crocoite/logger.py
parente19635a75cc1ab206be12ecf2b1c9a909baa9c21 (diff)
downloadcrocoite-5e444dd6511d97308a84ae9c86ebf14547d01f01.tar.gz
crocoite-5e444dd6511d97308a84ae9c86ebf14547d01f01.tar.bz2
crocoite-5e444dd6511d97308a84ae9c86ebf14547d01f01.zip
Parse URLs by default
Use library yarl (already pulled in by aiohttp). No URL processed should be a string.
Diffstat (limited to 'crocoite/logger.py')
-rw-r--r--crocoite/logger.py17
1 files changed, 4 insertions, 13 deletions
diff --git a/crocoite/logger.py b/crocoite/logger.py
index cddc42d..7f4a4de 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
@@ -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):
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
@@ -136,6 +127,6 @@ class WarcHandlerConsumer (Consumer):
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