diff --git a/chia/server/start_data_layer.py b/chia/server/start_data_layer.py index ef6a1f9829c2..e9eee0765a93 100644 --- a/chia/server/start_data_layer.py +++ b/chia/server/start_data_layer.py @@ -1,8 +1,10 @@ from __future__ import annotations +import contextlib import logging import pathlib import sys +from io import TextIOWrapper from typing import Any, Dict, Optional, cast from chia.data_layer.data_layer import DataLayer @@ -25,6 +27,20 @@ log = logging.getLogger(__name__) +class StdOutputLogger(TextIOWrapper): + def __init__(self, logger: logging.Logger, level: int = logging.INFO) -> None: + self.logger = logger + self.level = level + + def write(self, message: str) -> int: + if message and not message.isspace(): + self.logger.log(self.level, message) + return 0 + + def flush(self) -> None: + pass + + # TODO: Review need for config and if retained then hint it properly. def create_data_layer_service( root_path: pathlib.Path, @@ -79,16 +95,19 @@ async def async_main() -> int: root_path=DEFAULT_ROOT_PATH, ) - create_all_ssl( - root_path=DEFAULT_ROOT_PATH, - private_node_names=["data_layer"], - public_node_names=["data_layer"], - overwrite=False, - ) - - service = create_data_layer_service(DEFAULT_ROOT_PATH, config) - await service.setup_process_global_state() - await service.run() + with contextlib.redirect_stdout( + StdOutputLogger(log, logging.INFO) + ) if not sys.stdout.isatty() else contextlib.nullcontext(): + create_all_ssl( + root_path=DEFAULT_ROOT_PATH, + private_node_names=["data_layer"], + public_node_names=["data_layer"], + overwrite=False, + ) + + service = create_data_layer_service(DEFAULT_ROOT_PATH, config) + await service.setup_process_global_state() + await service.run() return 0