Skip to content

LogDefault

dotflow.providers.log_default.LogDefault

Bases: Log

Import

You can import the LogDefault class with:

from dotflow.providers import LogDefault

Parameters:

Name Type Description Default
level str

Minimum log level. One of DEBUG, INFO, WARNING, ERROR. Defaults to INFO.

'INFO'
output str

Log destination. One of file, console, both. Defaults to console.

'console'
path str

Path to the log file. Only used when output is file or both. Defaults to .output/flow.log.

str(LOG_PATH)
format str

Message format. One of simple, json. Defaults to simple.

'simple'
Source code in dotflow/providers/log_default.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
class LogDefault(Log):
    """
    Import:
        You can import the **LogDefault** class with:

            from dotflow.providers import LogDefault

    Args:
        level (str): Minimum log level. One of DEBUG, INFO, WARNING, ERROR.
            Defaults to INFO.

        output (str): Log destination. One of file, console, both.
            Defaults to console.

        path (str): Path to the log file. Only used when output is file or both.
            Defaults to .output/flow.log.

        format (str): Message format. One of simple, json.
            Defaults to simple.
    """

    def __init__(
        self,
        level: str = "INFO",
        output: str = "console",
        path: str = str(settings.LOG_PATH),
        format: str = "simple",
    ) -> None:
        self._level = LEVELS.get(level.upper(), logging.INFO)
        self._format = format

        self._logger = logging.getLogger(f"dotflow.{id(self)}")
        self._logger.setLevel(self._level)
        self._logger.handlers.clear()
        self._logger.propagate = False

        fmt = logging.Formatter(settings.LOG_FORMAT)

        if output in ("file", "both"):
            filepath = Path(path)
            filepath.parent.mkdir(parents=True, exist_ok=True)
            fh = logging.FileHandler(filepath, mode="a")
            fh.setLevel(self._level)
            fh.setFormatter(fmt)
            self._logger.addHandler(fh)

        if output in ("console", "both"):
            ch = logging.StreamHandler()
            ch.setLevel(self._level)
            ch.setFormatter(fmt)
            self._logger.addHandler(ch)

__init__(level='INFO', output='console', path=str(settings.LOG_PATH), format='simple')

Source code in dotflow/providers/log_default.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
def __init__(
    self,
    level: str = "INFO",
    output: str = "console",
    path: str = str(settings.LOG_PATH),
    format: str = "simple",
) -> None:
    self._level = LEVELS.get(level.upper(), logging.INFO)
    self._format = format

    self._logger = logging.getLogger(f"dotflow.{id(self)}")
    self._logger.setLevel(self._level)
    self._logger.handlers.clear()
    self._logger.propagate = False

    fmt = logging.Formatter(settings.LOG_FORMAT)

    if output in ("file", "both"):
        filepath = Path(path)
        filepath.parent.mkdir(parents=True, exist_ok=True)
        fh = logging.FileHandler(filepath, mode="a")
        fh.setLevel(self._level)
        fh.setFormatter(fmt)
        self._logger.addHandler(fh)

    if output in ("console", "both"):
        ch = logging.StreamHandler()
        ch.setLevel(self._level)
        ch.setFormatter(fmt)
        self._logger.addHandler(ch)