Statistiques
| Branche: | Tag: | Révision :

dockonsurf / modules / config_log.py @ cf980c86

Historique | Voir | Annoter | Télécharger (1,64 ko)

1 4e82c425 Carles Martí
"""Module for the configuration of how and what is recorded in the log file."""
2 07bba5bb Carles Martí
import sys
3 9f7bb440 Carles
import logging
4 bf33f563 Carles Martí
import warnings
5 9f7bb440 Carles
6 9f7bb440 Carles
7 07bba5bb Carles Martí
def log_exception(exc_type, exc_value, exc_tb):
8 4e82c425 Carles Martí
    """Sets up the recording of exceptions on the log file
9 4e82c425 Carles Martí

10 4e82c425 Carles Martí
    @param exc_type: Type of exception
11 4e82c425 Carles Martí
    @param exc_value: Value of the exception
12 4e82c425 Carles Martí
    @param exc_tb:
13 4e82c425 Carles Martí
    @return: None
14 4e82c425 Carles Martí
    """
15 07bba5bb Carles Martí
    if issubclass(exc_type, KeyboardInterrupt):
16 07bba5bb Carles Martí
        sys.__excepthook__(exc_type, exc_value, exc_tb)
17 07bba5bb Carles Martí
        return
18 07bba5bb Carles Martí
    logger = logging.getLogger('DockOnSurf')
19 07bba5bb Carles Martí
    logger.error("", exc_info=(exc_type, exc_value, exc_tb))
20 07bba5bb Carles Martí
21 07bba5bb Carles Martí
22 bf33f563 Carles Martí
def log_warning(message, *args, **kwargs):
23 4e82c425 Carles Martí
    """Sets up the recording of warnings on the log file
24 4e82c425 Carles Martí

25 4e82c425 Carles Martí
    @param message: Warning message.
26 4e82c425 Carles Martí
    @param args: Additional arguments.
27 4e82c425 Carles Martí
    @param kwargs: Additional keyword arguments.
28 4e82c425 Carles Martí
    @return: None
29 4e82c425 Carles Martí
    """
30 bf33f563 Carles Martí
    logger = logging.getLogger('DockOnSurf')
31 bf33f563 Carles Martí
    logger.warning(" ".join(f"{message}".split()))
32 bf33f563 Carles Martí
33 78fcb188 Carles Martí
34 4e82c425 Carles Martí
def config_log(label):  # TODO Format log to break long lines (after column 80).
35 4e82c425 Carles Martí
    """Configures the logger to record all calculation events on a log file.
36 4e82c425 Carles Martí

37 4e82c425 Carles Martí
    @param label: Label of the logger to be used.
38 4e82c425 Carles Martí
    @return: The logger object.
39 4e82c425 Carles Martí
    """
40 9f7bb440 Carles
    logger = logging.getLogger(label)
41 9f7bb440 Carles
    logger.setLevel(logging.INFO)
42 78fcb188 Carles Martí
43 9f7bb440 Carles
    log_handler = logging.FileHandler('dockonsurf.log', mode='w')
44 9f7bb440 Carles
    log_handler.setLevel(logging.INFO)
45 9f7bb440 Carles
    log_format = logging.Formatter(fmt='%(asctime)s-%(levelname)s: %(message)s',
46 9f7bb440 Carles
                                   datefmt='%d-%b-%y %H:%M:%S')
47 9f7bb440 Carles
    log_handler.setFormatter(log_format)
48 78fcb188 Carles Martí
49 9f7bb440 Carles
    logger.addHandler(log_handler)
50 bf33f563 Carles Martí
51 07bba5bb Carles Martí
    sys.excepthook = log_exception
52 bf33f563 Carles Martí
    warnings.showwarning = log_warning
53 78fcb188 Carles Martí
54 9f7bb440 Carles
    return logger