Commit 10754e2c authored by Ibrahim Ahmed's avatar Ibrahim Ahmed
Browse files

controller: Exception guard when writing settings to file, logging:...

controller: Exception guard when writing settings to file, logging: HTTPHandler exceptions fail silently
parent b7100912
Loading
Loading
Loading
Loading
+4 −1
Changes for src/controller.py: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -107,12 +107,15 @@ def get_settings(parsed_args, section: str='DEFAULT', write_settings=False) -> d
            settings[setting] = DEFAULTS[setting]

    if settings.get('output_settings') not in ('', None) and write_settings:
        try:
            with open(settings['output_settings'], 'w', newline='') as f:
                # Only these settings are written to the output settings csv
                keys = ['interval', 'stepsize', 'target', 'window', 'bounds']
                writer = csv.DictWriter(f, fieldnames=keys)
                writer.writeheader()
                writer.writerow({k: settings[k] for k in keys})
        except Exception as exc:
            get_logger().error(msg=exc, exc_info=True)

    return settings

@@ -242,7 +245,7 @@ if __name__ == '__main__':
                ev_halt.set()
            except Exception as exc:
                logger.error(msg=exc, exc_info=True)
                if settings['dry_run']:
                if settings.get('dry_run', False):
                    ev_halt.set()
                else:
                    ev_halt.wait(float(settings['interval']) - \
+2 −2
Changes for src/monitor.py: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ dapp.layout = html.Div([

@app.route('/log', methods=('POST',))   # endpoint for POST requests
def log():
    logger = get_logger('monitor')
    logger = get_logger()
    rdict = request.form
    ip = request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
    logger.log(int(rdict.get('levelno', logging.ERROR)), 'From: %s. %s' % (ip, rdict.get('message', 'NO_MESSAGE')))
@@ -66,7 +66,7 @@ if __name__ == '__main__':
    parser = make_arguments()
    args = parser.parse_args()
    settings = get_settings(args, section='MONITOR')
    logger = get_logger('monitor')
    logger = get_logger()
    logger = make_logger(enable=('stream', 'file', 'email'), logger=logger, **settings)
    logger.info('Started monitoring on %s:%s ...' % (settings['host'], settings['port']))
    dapp.run_server(host=settings['host'], port=settings['port'], debug=True)
+2 −2
Changes for src/settings.ini: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -7,8 +7,8 @@ password =
chiller_1_trend = 2422
chiller_2_trend = 2841
# Location of output file where to put control action.
output = /app001/niagara/Niagara4.2/vykon/shared/ESB_CDWT_Setpoint.csv
output_settings = /app001/niagara/Niagara4.2/vykon/shared/ESB_CDWT_PythonSettings.csv
output = /app001/shared/ESB_CDWT_Setpoint.csv
output_settings = /app001/shared/ESB_CDWT_PythonSettings.csv

## LOGGING
## =======
+14 −0
Changes for src/utils/logging.py: 14 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -195,6 +195,20 @@ class RemoteHandler(HTTPHandler):
        return super().mapLogRecord(record)


    def emit(self, record: logging.LogRecord):
        """
        Send the log to the server. If an error occurs, silently fail.

        Parameters
        ----------
        record : logging.LogRecord
        """
        try:
            super().emit(self, record)
        except Exception as exc:
            pass



class UTCFormatter(logging.Formatter):
    """