source: ogClient-Git/ogclient

Last change on this file was 30fdcce, checked in by Jose M. Guisado <jguisado@…>, 2 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 100755
File size: 2.5 KB
RevLine 
[87c2a6a]1#!/usr/bin/python3
[99f2951]2
[834f5cd]3#
[cb9edc8]4# Copyright (C) 2020-2021 Soleta Networks <info@soleta.eu>
[834f5cd]5#
6# This program is free software: you can redistribute it and/or modify it under
7# the terms of the GNU Affero General Public License as published by the
[cb9edc8]8# Free Software Foundation; either version 3 of the License, or
9# (at your option) any later version.
[834f5cd]10
[38b6d77]11import json
[fd1f01d]12import logging
[05f2fd4]13import argparse
[1601ad9]14import platform
[bf69d20]15import subprocess
[fd1f01d]16try:
17        from signal import SIG_DFL, SIGPIPE
18except ImportError:
19        from signal import SIG_DFL
20
21
[834f5cd]22from src.ogClient import *
[3dfe549]23from src.log import configure_logging
[fd1f01d]24
[834f5cd]25
[05f2fd4]26def send_event_dgram(msg, ip='127.0.0.1', port=55885):
27        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
28        sock.sendto(bytes(msg, "utf-8"), (ip, port))
29
30
31def create_parser():
32        events = ['login', 'logout']
33        parser = argparse.ArgumentParser()
34        parser.set_defaults(func=None)
35        subparsers = parser.add_subparsers()
36
37        parser_event = subparsers.add_parser('event')
38
39        subparsers_event = parser_event.add_subparsers()
40        parser_event_login = subparsers_event.add_parser('login')
41        parser_event_login.set_defaults(func=lambda x: send_event_dgram(f'session start {x.user}'))
42        parser_event_login.add_argument('user', type=str)
43        parser_event_logout = subparsers_event.add_parser('logout')
44        parser_event_logout.set_defaults(func=lambda x: send_event_dgram(f'session stop {x.user}'))
45        parser_event_logout.add_argument('user', type=str)
46
[ecd735c]47        parser.add_argument('-c', '--config', default="",
48                            help='ogClient JSON config file path')
[30fdcce]49        parser.add_argument('--debug', default=False,
50                            action='store_true',
51                            help='enables debug log level')
[ecd735c]52
[05f2fd4]53        return parser
54
55
[834f5cd]56def main():
[05f2fd4]57        parser = create_parser()
58        args = parser.parse_args(sys.argv[1:])
59        if args.func:
60                args.func(args)
61                return
[1601ad9]62
[ecd735c]63        if args.config:
64                config_path = args.config
65        elif platform.system().lower() == 'linux':
[1601ad9]66                config_path = f'{ogClient.OG_PATH}ogclient/cfg/ogclient.json'
67        else:
68                config_path = './cfg/ogclient.json'
69
[38b6d77]70        try:
71                with open(config_path, 'r') as f:
72                        CONFIG = json.load(f)
73        except:
74                print('Error: Parsing configuration file')
[834f5cd]75                return 0
76
[38b6d77]77        MODE = CONFIG['opengnsys']['mode']
78        URL = CONFIG['opengnsys']['url']
[30fdcce]79        LOGLEVEL = CONFIG['opengnsys']['log']
80
[1377ace]81        if MODE == 'live':
[38b6d77]82                proc = subprocess.Popen(["browser", "-qws", URL])
[fd1f01d]83        if MODE != 'windows':
84                signal.signal(SIGPIPE, SIG_DFL)
[bf69d20]85
[30fdcce]86        configure_logging(MODE, LOGLEVEL)
87
88        if args.debug:
89                logging.getLogger().setLevel('DEBUG')
[3dfe549]90
[38b6d77]91        client = ogClient(config=CONFIG)
[834f5cd]92        client.connect()
93        client.run()
94
95if __name__ == "__main__":
96        main()
Note: See TracBrowser for help on using the repository browser.