Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 0b96f10c

Přidáno uživatelem Pultak před asi 3 roky(ů)

re #9360 Added logging system -> log config, logging messages

Zobrazit rozdíly:

client/config.ini
8 8
end_point = /api/v1/usb-logs
9 9

  
10 10
[logger]
11
file = logger.conf
11 12
format = %(asctime)s %(levelname)s : %(message)s
12 13
level = INFO
13 14

  
client/config_manager.py
18 18
server_port = config[server_section]["port"]
19 19
server_endpoint = config[server_section]["end_point"]
20 20

  
21
logger_config = config[logger_section]["file"]
21 22
logger_format = config[logger_section]["format"]
22 23
logger_level_str = config[logger_section]["level"]
23 24
logger_level = 0
client/logger.conf
1
[loggers]
2
keys=root
3

  
4
[handlers]
5
keys=consoleHandler,logFileHandler
6

  
7
[formatters]
8
keys=simpleFormatter
9

  
10
[logger_root]
11
level=DEBUG
12
handlers=consoleHandler
13

  
14
[handler_consoleHandler]
15
class=StreamHandler
16
level=DEBUG
17
formatter=simpleFormatter
18
args=(sys.stdout,)
19

  
20
[handler_logFileHandler]
21
class=handlers.RotatingFileHandler
22
level=NOTSET
23
args=('app_info.log','a',10000,1)
24
formatter=simpleFormatter
25

  
26
[formatter_simpleFormatter]
27
format=%(asctime)s - %(levelname)s - %(message)s
client/main.py
1 1
import logging
2
import logging.config
3
from os.path import exists
2 4
from threading import Thread
3 5
from tendo import singleton
4 6

  
5
from config_manager import logger_format, logger_level
7
from config_manager import logger_format, logger_level, logger_config
6 8
from usb_detector.detector import register_listener, usb_detector_run
7 9
from usb_detector.event_listener import usb_connected_callback, usb_disconnected_callback
8 10
from api_client import api_client_run
9 11

  
12
def init_logging():
13
    if exists(logger_config):
14
        logging.config.fileConfig(fname=logger_config)
15
    else:
16
        print(f"Cant find logger configuration \"{logger_config}\"! Please specify valid path or define new.")
17
        exit(1)
18

  
10 19

  
11 20
if __name__ == "__main__":
12 21
    app_instance = singleton.SingleInstance()
13

  
14
    logging.basicConfig(format=logger_format, level=logger_level)
22
    init_logging()
15 23

  
16 24
    register_listener(callback=usb_connected_callback, connected=True)
17 25
    register_listener(callback=usb_disconnected_callback, connected=False)
......
22 30
    api_thread = Thread(target=api_client_run)
23 31
    api_thread.setDaemon(True)
24 32

  
33
    logging.info('starting USB detector.')
25 34
    usb_detector_thread.start()
35

  
36
    logging.info('starting API communication manager.')
26 37
    api_thread.start()
27 38

  
28 39
    usb_detector_thread.join()
29 40
    api_thread.join()
41

  
42
    logging.info('application exit.')
client/usb_detector/detector.py
11 11

  
12 12

  
13 13
def register_listener(callback, connected: bool = True):
14
    logging.info(f'Registering callback: {callback}.')
15

  
14 16
    if connected is True:
15 17
        _listeners_connected.append(callback)
16 18
    else:
......
24 26

  
25 27

  
26 28
def _store_connected_devices(devices: list):
29
    logging.debug('storing newly connected devices')
27 30
    with open(connected_devices_filename, "w") as file:
28 31
        json.dump(devices, file)
29 32

  
30 33

  
31 34
def _load_last_connected_devices() -> list:
35
    logging.debug('loading last connected devices')
32 36
    try:
33 37
        with open(connected_devices_filename, "r") as file:
34 38
            return json.loads(file.read())
35 39
    except IOError:
40
        logging.error('loading of last connected devices failed')
36 41
        return []
37 42

  
38 43

  
client/usb_detector/event_listener.py
7 7

  
8 8

  
9 9
def _get_metadata() -> dict:
10
    logging.debug('getting computer metadata')
10 11
    return {
11 12
        "username": getpass.getuser(),
12 13
        "hostname": platform.uname().node,
......
15 16

  
16 17

  
17 18
def _send_payload_to_server(device: dict, status: str):
19
    logging.debug('payload send preparation')
18 20
    payload = _get_metadata()
19 21
    payload["device"] = device
20 22
    payload["status"] = status
client/usb_detector/usb_reader.py
1
import logging
2

  
1 3
import usb.core
2 4
import usb.util
3 5

  
4 6

  
5 7
def read_connected_devices():
8
    logging.debug(f'reading all currently connected devices')
6 9
    detected_devices = []
7 10

  
8 11
    busses = usb.busses()
......
16 19
                serial_number = usb.util.get_string(device_info, device_info.iSerialNumber)
17 20
            except:
18 21
                # Failed to retrieve information from device
22
                logging.info(f"device idVendor:{dev.idVendor} idProduct:{dev.idProduct} has invalid format")
19 23
                pass
20 24

  
21 25
            if serial_number is not None:

Také k dispozici: Unified diff