from typing import Any, Iterable

Any1D = Iterable[Any]

class Logger:
    def is_log_to_file(self) -> bool: ...
    def is_log_to_console(self) -> bool: ...

    def set_log_to_file(self, log_to_file: bool) -> None: ...
    def set_log_to_console(self, log_to_console: bool) -> None: ...
    def set_max_log_files_to_keep(self, value: int) -> None: ...
    def set_log_debug(self, log_debug: bool) -> None: ...
    def set_log_warn(self, log_warn: bool) -> None: ...
    def set_log_error(self, log_error: bool) -> None: ...

    def get_log_debug(self) -> bool: ...
    def get_log_warn(self) -> bool: ...
    def get_log_error(self) -> bool: ...
    def get_max_log_files_to_keep(self) -> int: ...

    def log_debug_with_id(
        self, log_id: str, content: str, product_name: str="",
        repeat_for_effect: bool=False) -> None: ...
    def log_warn_with_id(
        self, log_id: str, content: str, product_name: str="",
        repeat_for_effect: bool=False) -> None: ...
    def log_error_with_id(
        self, log_id: str, content: str, product_name: str="",
        repeat_for_effect: bool=False) -> None: ...

    def log_debug(
        self, content: str, values: Any1D=[], product_name: str="",
        repeat_for_effect: bool=False) -> None: ...
    def log_warn(
        self, content: str, values: Any1D=[], product_name: str="",
        repeat_for_effect: bool=False) -> None: ...
    def log_error(
        self, content: str, values: Any1D=[], product_name: str="",
        repeat_for_effect: bool=False) -> None: ...