вход на терминал через python - PullRequest
0 голосов
/ 17 мая 2018

Я начал ковыряться с логированием и BLE. Теперь я получил этот кусок кода, который я взял из пакета bgapi. Я думаю, что вроде как понимаю, как это работает, но я хотел бы видеть вывод в файле или в рабочей области. Как бы я этого достиг?

def pipe_logs_to_terminal(self, level=logging.INFO):
    term = logging.StreamHandler(sys.stdout)
    formatter = logging.Formatter(self._api._serial.portstr + ': %(asctime)s - 
    %(name)s - %(levelname)s - %(message)s')
    term.setFormatter(formatter)
    api_logger = logging.getLogger("bgapi")
    api_logger.addHandler(term)
    api_logger.setLevel(level=level)

1 Ответ

0 голосов
/ 17 мая 2018

Вы просто используете logging.FileHandler(). Я пытался реализовать это в вашем методе:

def pipe_logs_to_terminal(self, level=logging.INFO):
    log_path = "."  # cwd
    file_name = "my_app"
    # configure root logger
    api_logger = logging.getLogger("bgapi")
    api_logger.setLevel(level=level)
    # set format
    formatter = logging.Formatter(self._api._serial.portstr + ': %(asctime)s - %(name)s - %(levelname)s - %(message)s')
    # configure file handler
    file_handler = logging.FileHandler("{0}/{1}.log".format(log_path, file_name))
    file_handler.setFormatter(formatter)
    api_logger.addHandler(file_handler)
    # configure console handler
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setFormatter(formatter)
    api_logger.addHandler(console_handler)

При желании вы можете опустить часть console_handler (называемую term в вашем примере), если вы решите только передать свою регистрацию в файл.

...