76 lines
1.9 KiB
Python
76 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# *****************************************************************************
|
|
# Copyright (C) 2006-2020 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
|
|
# Copyright (C) 2020 Bassem Girgis. <brgirgis@gmail.com>
|
|
#
|
|
# Distributed under the terms of the BSD License. The full license is in
|
|
# the file COPYING, distributed as part of this software.
|
|
# *****************************************************************************
|
|
|
|
import os
|
|
from logging import FileHandler, Formatter, StreamHandler
|
|
from logging.handlers import DEFAULT_TCP_LOGGING_PORT
|
|
from typing import Optional
|
|
|
|
from .logger import LOGGER
|
|
from .socket_stream import SocketStream
|
|
|
|
_default_formatter_str = os.environ.get("PYREADLINE_FORMATTER", "%(message)s")
|
|
|
|
SOCKET_HANDLER: Optional["StreamHandler[SocketStream]"] = None
|
|
FILE_HANDLER: Optional[FileHandler] = None
|
|
|
|
|
|
def start_socket_log(
|
|
host: str = "localhost",
|
|
port: int = DEFAULT_TCP_LOGGING_PORT,
|
|
formatter_str: str = _default_formatter_str,
|
|
) -> None:
|
|
global SOCKET_HANDLER
|
|
|
|
if SOCKET_HANDLER is not None:
|
|
return
|
|
|
|
SOCKET_HANDLER = StreamHandler(SocketStream(host, port))
|
|
SOCKET_HANDLER.setFormatter(Formatter(formatter_str))
|
|
|
|
LOGGER.addHandler(SOCKET_HANDLER)
|
|
|
|
|
|
def stop_socket_log() -> None:
|
|
global SOCKET_HANDLER
|
|
|
|
if SOCKET_HANDLER is None:
|
|
return
|
|
|
|
LOGGER.removeHandler(SOCKET_HANDLER)
|
|
|
|
SOCKET_HANDLER = None
|
|
|
|
|
|
def start_file_log(filename: str) -> None:
|
|
global FILE_HANDLER
|
|
|
|
if FILE_HANDLER is not None:
|
|
return
|
|
|
|
FILE_HANDLER = FileHandler(filename, "w")
|
|
LOGGER.addHandler(FILE_HANDLER)
|
|
|
|
|
|
def stop_file_log() -> None:
|
|
global FILE_HANDLER
|
|
|
|
if FILE_HANDLER is None:
|
|
return
|
|
|
|
LOGGER.removeHandler(FILE_HANDLER)
|
|
|
|
FILE_HANDLER.close()
|
|
FILE_HANDLER = None
|
|
|
|
|
|
def stop_logging() -> None:
|
|
stop_file_log()
|
|
stop_socket_log()
|