File size: 1,822 Bytes
28c59d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
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
"""Loggers: warnings to stderr, warnings to file, verbose debug info to file."""

import logging
import sys

PLAIN_FORMATTER = logging.Formatter("%(levelname)s %(message)s")

TIMESTAMP_FORMATTER = logging.Formatter(
    "%(asctime)s %(levelname)s %(message)s", "%Y-%m-%d %H:%M"
)


def stderr_logger():
    """Initialize logger for printing messages, INFO and higher, to standard error."""
    stderr_info_logger = logging.getLogger("stderr_logger")
    stderr_info_logger.setLevel(logging.INFO)
    stderr_info_logger_handler = logging.StreamHandler(sys.stderr)
    stderr_info_logger_handler.setLevel(logging.INFO)
    stderr_info_logger.addHandler(stderr_info_logger_handler)
    stderr_info_logger_handler.setFormatter(PLAIN_FORMATTER)
    return stderr_info_logger


def warning_logger(output_filename="warnings.log"):
    """Logger for printing time-stamped messages, WARNING and higher, to file."""
    warningfile_logger = logging.getLogger("warningfile_logger")
    warningfile_logger.setLevel(logging.INFO)
    warningfile_logger_handler = logging.FileHandler(output_filename, mode="w")
    warningfile_logger_handler.setLevel(logging.WARNING)
    warningfile_logger.addHandler(warningfile_logger_handler)
    warningfile_logger_handler.setFormatter(TIMESTAMP_FORMATTER)
    return warningfile_logger


def debug_logger(output_filename="debug.log"):
    """Logger for printing time-stamped messages, DEBUG and higher, to file."""
    debugfile_logger = logging.getLogger("debugfile_logger")
    debugfile_logger.setLevel(logging.DEBUG)
    debugfile_logger_handler = logging.FileHandler(output_filename, mode="w")
    debugfile_logger_handler.setLevel(logging.DEBUG)
    debugfile_logger.addHandler(debugfile_logger_handler)
    debugfile_logger_handler.setFormatter(TIMESTAMP_FORMATTER)
    return debug_logger