Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improving logging and reducing output in the stdout #71

Merged
merged 2 commits into from
Oct 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions examples/7.FSM/1.semaphore/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,20 @@
import enum
import time
import random
import logging

logger = logging.getLogger("fsm")

def on_RED(data):
print("Stop!")
logger.info("Stop!")
time.sleep(data)

def on_YELLOW(data):
print("Slow down!")
logger.info("Slow down!")
time.sleep(data)

def on_GREEN(data):
print("Go!")
logger.info("Go!")
time.sleep(data)

fsm = FSM("Semaphore")
Expand Down
Binary file modified examples/7.FSM/1.semaphore/diagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 6 additions & 3 deletions examples/7.FSM/2.semaphore_subs/1.pub.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
from datetime import date

import time
import logging

logger = logging.getLogger("FSM/SEMAPHORE")

class Semaphore(FSM):

Expand All @@ -46,15 +49,15 @@ def __init__(self):
self.addTransition("stop", "YELLOW", "init")

def on_RED(self, msg='default', wait_time=6):
print("RED STATE: Stop! Received msg: %s" % msg)
logger.info("RED STATE: Stop! Received msg: %s" % msg)
time.sleep(wait_time)

def on_YELLOW(self, msg='default', wait_time=1):
print("YELLOW STATE: Slow down! Received msg: %s" % msg)
logger.info("YELLOW STATE: Slow down! Received msg: %s" % msg)
time.sleep(wait_time)

def on_GREEN(self, msg='default', wait_time=1):
print("GREEN STATE: Go! Received msg: %s" % msg)
logger.info("GREEN STATE: Go! Received msg: %s" % msg)
time.sleep(wait_time)

class Publisher(PyiCubRESTfulServer):
Expand Down
2 changes: 1 addition & 1 deletion pyicub/core/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def getLogger():
FORMAT = '%(asctime)s - %(levelname)s - %(message)s'
FORMAT_VERBOSE = '%(asctime)s - %(levelname)s - %(module)s - %(process)d - %(thread)d - %(message)s'
FORMAT_JSON = '{"asctime": "%(asctime)-15s", "created": %(created)f, "relativeCreated": %(relativeCreated)f, "levelname": "%(levelname)s", "module": "%(module)s", "process": %(process)d, "processName": "%(processName)s", "thread": %(thread)d, "threadName": "%(threadName)s", "message": "%(message)s"}'
LOGGING_LEVEL = logging.DEBUG
LOGGING_LEVEL = logging.WARNING

def __init__(self):
_Logger.__init__(self)
Expand Down
2 changes: 1 addition & 1 deletion pyicub/fsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import logging
logging.basicConfig(level=logging.DEBUG)
logging.getLogger('transitions').setLevel(logging.INFO)
logging.getLogger('transitions').setLevel(logging.ERROR)

class FSM:

Expand Down
26 changes: 21 additions & 5 deletions pyicub/rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@
import threading
import functools
import importlib
import logging

logging.getLogger('werkzeug').setLevel(logging.WARNING)


# A sample class that might represent a generic type
class GenericType:
Expand Down Expand Up @@ -140,6 +144,7 @@ def __init__(self, rule_prefix, host, port):
self._rule_prefix_ = rule_prefix
self._on_enter_callbacks_ = {}
self._on_exit_callbacks_ = {}
self._logger_ = logging.getLogger("iCubRESTServer")
self._flaskapp_.add_url_rule("/", methods=['GET'], view_func=self.info)
self._flaskapp_.add_url_rule("/%s" % self._rule_prefix_, methods=['GET'], view_func=self.get_robots)
self._flaskapp_.add_url_rule("/%s/tree" % self._rule_prefix_, methods=['GET'], view_func=self.get_tree)
Expand All @@ -153,6 +158,10 @@ def __init__(self, rule_prefix, host, port):
self._flaskapp_.add_url_rule("/%s/<robot_name>" % self._rule_prefix_, methods=['GET'], view_func=self.get_apps)
self._flaskapp_.add_url_rule("/%s/<robot_name>/<app_name>" % self._rule_prefix_, methods=['GET'], view_func=self.get_services)
self._flaskapp_.add_url_rule("/%s/<robot_name>/<app_name>/<target_name>" % (self._rule_prefix_), methods=['GET', 'POST'], view_func=self.wrapper_target)

@property
def logger(self):
return self._logger_

def header(self, host, port):
return "http://%s:%s" % (host, port)
Expand Down Expand Up @@ -194,13 +203,20 @@ def shutdown(self):
def wrapper_target(self, robot_name, app_name, target_name):
target_rule = self.target_rule(robot_name, app_name, target_name)
if request.method == 'GET':
return self._app_services_[robot_name][app_name][target_name]
if robot_name in self._app_services_.keys():
if app_name in self._app_services_[robot_name].keys():
if target_name in self._app_services_[robot_name][app_name].keys():
return self._app_services_[robot_name][app_name][target_name]
elif request.method == 'POST':
if target_rule in self._services_.keys():
if not type(self._services_[target_rule].target) is str:
return self.process_target(self._services_[target_rule])
elif self._app_services_[robot_name][app_name][target_name]['url'] in self._services_.keys():
return self.process_target_remote(self._services_[self._app_services_[robot_name][app_name][target_name]['url']])
elif robot_name in self._app_services_.keys():
if app_name in self._app_services_[robot_name].keys():
if target_name in self._app_services_[robot_name][app_name].keys():
if self._app_services_[robot_name][app_name][target_name]['url'] in self._services_.keys():
return self.process_target_remote(self._services_[self._app_services_[robot_name][app_name][target_name]['url']])
return []

def process_target_remote(self, service):
url = service.url
Expand Down Expand Up @@ -447,8 +463,8 @@ def process_target(self, service):
thread.start()

if req.status == iCubRequest.FAILED:
print("Request %s Failed! Exception: %s" %(req.tag, req.exception))

self.logger.error("Request %s Failed! Exception: %s" %(req.tag, req.exception))
if wait_for_completed:
req.wait_for_completed()
return jsonify(req.retval)
Expand Down