source: ogClient-Git/src/log.py @ c159c76

Last change on this file since c159c76 was 30fdcce, checked in by Jose M. Guisado <jguisado@…>, 3 years ago

src: improve logging

Adds new logging handler redirecting messages to the log file
located in the Samba shared directory (applies to live mode
clients, i.e: ogLive)

Parses log level configuration from ogclient.json. See:

{

"opengnsys": {

...
"log": "INFO",
...

}
...

}

Adds --debug option to set root logger level to DEBUG when starting
ogClient. Overrides log level from config file.

In addition:

  • Replaces any occurence of print with a corresponding logging function.
  • Unsets log level for handlers, use root logger level instead.
  • Default level for root logger is INFO.
  • Replaces level from response log messages to debug (ogRest)
  • Property mode set to 100644
File size: 2.6 KB
Line 
1import logging
2import logging.config
3import os
4
5from src.utils.net import getifaddr
6
7DEFAULT_LOGGING_LINUX = {
8    'version': 1,
9    'disable_existing_loggers': False,
10    'formatters': {
11        'formatter.syslog': {
12            '()': 'logging.Formatter',
13            'format': 'ogClient: [{levelname}] - {message}',
14            'style': '{',
15        },
16        'formatter.console': {
17            '()': 'logging.Formatter',
18            'format': '[{levelname}] - {message}',
19            'style': '{',
20        },
21        'formatter.syslogtime': {
22            '()': 'logging.Formatter',
23            'datefmt': '%Y-%m-%d %H:%M:%S',
24            'format': '({asctime}) ogClient: [{levelname}] - {message}',
25            'style': '{',
26        },
27    },
28    'handlers': {
29        'console': {
30            'class': 'logging.StreamHandler',
31            'formatter': 'formatter.console',
32            'stream': 'ext://sys.stdout',
33        },
34        'syslog': {
35            'class': 'logging.handlers.SysLogHandler',
36            'formatter': 'formatter.syslog',
37            'address': '/dev/log',
38        },
39        'samba': {
40            'class': 'logging.FileHandler',
41            'formatter': 'formatter.syslogtime',
42            'filename': f'/opt/opengnsys/log/{getifaddr(os.getenv("DEVICE"))}.log',
43        },
44    },
45    'loggers': {
46        '': {
47            'handlers': ['syslog', 'console'],
48            'level': 'INFO',
49        },
50    }
51}
52
53DEFAULT_LOGGING_WIN = {
54    'version': 1,
55    'disable_existing_loggers': False,
56    'formatters': {
57        'formatter.console': {
58            '()': 'logging.Formatter',
59            'format': 'ogClient: [{levelname}] - {message}',
60            'style': '{',
61        }
62    },
63    'handlers': {
64        'console': {
65            'level': 'DEBUG',
66            'class': 'logging.StreamHandler',
67            'formatter': 'formatter.console',
68            'stream': 'ext://sys.stdout',
69        },
70    },
71    'loggers': {
72        '': {
73            'handlers': ['console'],
74            'level': 'DEBUG',
75        },
76    }
77}
78
79def configure_logging(mode, level):
80    """
81    Receives a ogClient operating mode.
82
83    Configures the default logger according to the operating mode.
84
85    For example, in the case of running live mode it will activate
86    logging to the expected samba shared log file ({ip}.txt.log).
87    """
88    if mode == 'windows':
89        logconfig = DEFAULT_LOGGING_WIN
90    else:
91        logconfig = DEFAULT_LOGGING_LINUX
92
93    if mode == 'live':
94        logconfig['loggers']['']['handlers'].append('samba')
95
96    logconfig['loggers']['']['level'] = level
97
98    logging.config.dictConfig(logconfig)
Note: See TracBrowser for help on using the repository browser.