Skip to content

Commit

Permalink
CommonClient: fix for fix json prints not being logged in UI mode
Browse files Browse the repository at this point in the history
  • Loading branch information
Berserker66 committed Oct 2, 2023
1 parent f9d3ea1 commit 3015399
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
9 changes: 7 additions & 2 deletions CommonClient.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ def __init__(self, server_address: typing.Optional[str], password: typing.Option
self.watcher_event = asyncio.Event()

self.jsontotextparser = JSONtoTextParser(self)
self.rawjsontotextparser = RawJSONtoTextParser(self)
self.update_data_package(network_data_package)

# execution
Expand Down Expand Up @@ -379,9 +380,13 @@ def on_print(self, args: dict):

def on_print_json(self, args: dict):
if self.ui:
# send copy to UI
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):
"""For custom package handling in subclasses."""
Expand Down
16 changes: 13 additions & 3 deletions Utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -446,11 +446,21 @@ def init_logging(name: str, loglevel: typing.Union[str, int] = logging.INFO, wri
write_mode,
encoding="utf-8-sig")
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)
if sys.stdout:
root_logger.addHandler(
logging.StreamHandler(sys.stdout)
)
stream_handler = 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.
if not getattr(sys.excepthook, "_wrapped", False): # skip if already modified
Expand Down

0 comments on commit 3015399

Please sign in to comment.