CommonClient: fix json prints not being logged in UI mode (#2253)
This commit is contained in:
parent
5eeaf834cb
commit
cc2247bfa0
|
@ -1,4 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import copy
|
||||||
import logging
|
import logging
|
||||||
import asyncio
|
import asyncio
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
@ -242,6 +244,7 @@ class CommonContext:
|
||||||
self.watcher_event = asyncio.Event()
|
self.watcher_event = asyncio.Event()
|
||||||
|
|
||||||
self.jsontotextparser = JSONtoTextParser(self)
|
self.jsontotextparser = JSONtoTextParser(self)
|
||||||
|
self.rawjsontotextparser = RawJSONtoTextParser(self)
|
||||||
self.update_data_package(network_data_package)
|
self.update_data_package(network_data_package)
|
||||||
|
|
||||||
# execution
|
# execution
|
||||||
|
@ -377,10 +380,13 @@ class CommonContext:
|
||||||
|
|
||||||
def on_print_json(self, args: dict):
|
def on_print_json(self, args: dict):
|
||||||
if self.ui:
|
if self.ui:
|
||||||
self.ui.print_json(args["data"])
|
# send copy to UI
|
||||||
else:
|
self.ui.print_json(copy.deepcopy(args["data"]))
|
||||||
text = self.jsontotextparser(args["data"])
|
|
||||||
logger.info(text)
|
logging.getLogger("FileLog").info(self.rawjsontotextparser(copy.deepcopy(args["data"])),
|
||||||
|
extra={"NoStream": True})
|
||||||
|
logging.getLogger("StreamLog").info(self.jsontotextparser(copy.deepcopy(args["data"])),
|
||||||
|
extra={"NoFile": True})
|
||||||
|
|
||||||
def on_package(self, cmd: str, args: dict):
|
def on_package(self, cmd: str, args: dict):
|
||||||
"""For custom package handling in subclasses."""
|
"""For custom package handling in subclasses."""
|
||||||
|
|
16
Utils.py
16
Utils.py
|
@ -459,11 +459,21 @@ def init_logging(name: str, loglevel: typing.Union[str, int] = logging.INFO, wri
|
||||||
write_mode,
|
write_mode,
|
||||||
encoding="utf-8-sig")
|
encoding="utf-8-sig")
|
||||||
file_handler.setFormatter(logging.Formatter(log_format))
|
file_handler.setFormatter(logging.Formatter(log_format))
|
||||||
|
|
||||||
|
class Filter(logging.Filter):
|
||||||
|
def __init__(self, filter_name, condition):
|
||||||
|
super().__init__(filter_name)
|
||||||
|
self.condition = condition
|
||||||
|
|
||||||
|
def filter(self, record: logging.LogRecord) -> bool:
|
||||||
|
return self.condition(record)
|
||||||
|
|
||||||
|
file_handler.addFilter(Filter("NoStream", lambda record: not getattr(record, "NoFile", False)))
|
||||||
root_logger.addHandler(file_handler)
|
root_logger.addHandler(file_handler)
|
||||||
if sys.stdout:
|
if sys.stdout:
|
||||||
root_logger.addHandler(
|
stream_handler = logging.StreamHandler(sys.stdout)
|
||||||
logging.StreamHandler(sys.stdout)
|
stream_handler.addFilter(Filter("NoFile", lambda record: not getattr(record, "NoStream", False)))
|
||||||
)
|
root_logger.addHandler(stream_handler)
|
||||||
|
|
||||||
# Relay unhandled exceptions to logger.
|
# Relay unhandled exceptions to logger.
|
||||||
if not getattr(sys.excepthook, "_wrapped", False): # skip if already modified
|
if not getattr(sys.excepthook, "_wrapped", False): # skip if already modified
|
||||||
|
|
Loading…
Reference in New Issue