diff --git a/glances/__init__.py b/glances/__init__.py index b30542a5..5c195c82 100644 --- a/glances/__init__.py +++ b/glances/__init__.py @@ -58,16 +58,22 @@ def __signal_handler(signal, frame): def end(): """Stop Glances.""" - logger.info("Stop Glances (with CTRL-C)") if core.is_standalone(): # Stop the standalone (CLI) standalone.end() + logger.info("Stop Glances (with CTRL-C)") elif core.is_client(): # Stop the client client.end() + logger.info("Stop Glances client (with CTRL-C)") elif core.is_server(): # Stop the server server.end() + logger.info("Stop Glances server (with CTRL-C)") + elif core.is_webserver(): + # Stop the Web server + webserver.end() + logger.info("Stop Glances web server(with CTRL-C)") # The end... sys.exit(0) @@ -84,7 +90,7 @@ def main(): gettext.install(gettext_domain, locale_dir) # Share global var - global core, standalone, client, server + global core, standalone, client, server, webserver # Create the Glances main instance core = GlancesMain() @@ -118,7 +124,7 @@ def main(): # Test if client and server are in the same major version if not client.login(): - print(_("Error: The server version is not compatible with the client")) + logger.critical(_("The server version is not compatible with the client")) sys.exit(2) # Start the client loop diff --git a/glances/core/glances_client.py b/glances/core/glances_client.py index ba0c9fbe..b6501895 100644 --- a/glances/core/glances_client.py +++ b/glances/core/glances_client.py @@ -29,7 +29,7 @@ except ImportError: # Python 2 from xmlrpclib import ServerProxy, ProtocolError, Fault # Import Glances libs -from glances.core.glances_globals import version +from glances.core.glances_globals import version, logger from glances.core.glances_stats import GlancesStatsClient from glances.outputs.glances_curses import GlancesCurses @@ -57,7 +57,7 @@ class GlancesClient(object): try: self.client = ServerProxy(uri) except Exception as e: - print(_("Error: Couldn't create socket {0}: {1}").format(uri, e)) + logger.error(_("Couldn't create socket {0}: {1}").format(uri, e)) sys.exit(2) def set_mode(self, mode='glances'): @@ -88,14 +88,17 @@ class GlancesClient(object): client_version = self.client.init() except socket.error as err: # Fallback to SNMP - print (_("Info: Connection to Glances server failed. Trying fallback to SNMP...")) + logger.error(_("Connection to Glances server failed")) self.set_mode('snmp') + fallbackmsg = _("Trying fallback to SNMP...") + print(fallbackmsg) + logger.info(fallbackmsg) except ProtocolError as err: # Others errors if str(err).find(" 401 ") > 0: - print(_("Error: Connection to server failed: Bad password")) + logger.error(_("Connection to server failed (Bad password)")) else: - print(_("Error: Connection to server failed: {0}").format(err)) + logger.error(_("Connection to server failed ({0})").format(err)) sys.exit(2) if self.get_mode() == 'glances' and version[:3] == client_version[:3]: @@ -103,8 +106,8 @@ class GlancesClient(object): self.stats = GlancesStatsClient() self.stats.set_plugins(json.loads(self.client.getAllPlugins())) else: - print (_("Info: Trying to grab stats by SNMP...")) self.set_mode('snmp') + logger.info(_("Trying to grab stats by SNMP...")) if self.get_mode() == 'snmp': # Fallback to SNMP if needed @@ -114,7 +117,7 @@ class GlancesClient(object): self.stats = GlancesStatsClientSNMP(args=self.args) if not self.stats.check_snmp(): - print(_("Error: Connection to SNMP server failed")) + logger.error(_("Connection to SNMP server failed")) sys.exit(2) else: # Unknow mode... @@ -138,7 +141,8 @@ class GlancesClient(object): elif self.get_mode() == 'snmp': return self.update_snmp() else: - print(_("Error: Unknown server mode: {0}").format(self.get_mode())) + self.end() + logger.critical(_("Unknown server mode: {0}").format(self.get_mode())) sys.exit(2) def update_glances(self): @@ -188,8 +192,6 @@ class GlancesClient(object): # Update the screen self.screen.update(self.stats, cs_status=cs_status) - # print self.stats - # print self.stats.getAll() def end(self): """End of the client session.""" diff --git a/glances/core/glances_logging.py b/glances/core/glances_logging.py index 6efb84f6..35757fd9 100644 --- a/glances/core/glances_logging.py +++ b/glances/core/glances_logging.py @@ -33,6 +33,9 @@ LOGGING_CFG = { 'formatters': { 'standard': { 'format': '%(asctime)s -- %(levelname)s -- %(message)s' + }, + 'short': { + 'format': '%(levelname)s: %(message)s' } }, 'handlers': { @@ -43,9 +46,9 @@ LOGGING_CFG = { 'filename': '/tmp/glances.log' }, 'console':{ - 'level':'CRITICAL', + 'level':'ERROR', 'class':'logging.StreamHandler', - 'formatter': 'standard' + 'formatter': 'short' } }, 'loggers': { diff --git a/glances/core/glances_server.py b/glances/core/glances_server.py index 8b7bf349..5f02a198 100644 --- a/glances/core/glances_server.py +++ b/glances/core/glances_server.py @@ -32,7 +32,7 @@ except ImportError: # Python 2 from SimpleXMLRPCServer import SimpleXMLRPCServer # Import Glances libs -from glances.core.glances_globals import version +from glances.core.glances_globals import version, logger from glances.core.glances_stats import GlancesStatsServer from glances.core.glances_timer import Timer @@ -113,7 +113,7 @@ class GlancesXMLRPCServer(SimpleXMLRPCServer): try: self.address_family = socket.getaddrinfo(bind_address, bind_port)[0][0] except socket.error as e: - print(_("Error: Couldn't open socket: {0}").format(e)) + logger.error(_("Couldn't open socket: {0}").format(e)) sys.exit(1) SimpleXMLRPCServer.__init__(self, (bind_address, bind_port), @@ -170,7 +170,6 @@ class GlancesInstance(object): The goal is to dynamically generate the API get'Stats'() methods. """ - # print "DEBUG: Call method: %s" % item header = 'get' # Check if the attribute starts with 'get' if item.startswith(header): @@ -200,7 +199,7 @@ class GlancesServer(object): try: self.server = GlancesXMLRPCServer(args.bind_address, args.port, requestHandler) except Exception as e: - print(_("Error: Cannot start Glances server: {0}").format(e)) + logger.error(_("Cannot start Glances server: {0}").format(e)) sys.exit(2) # The users dict diff --git a/glances/core/glances_snmp.py b/glances/core/glances_snmp.py index f7b8692a..934ceb52 100644 --- a/glances/core/glances_snmp.py +++ b/glances/core/glances_snmp.py @@ -19,11 +19,15 @@ import sys +# Import Glances libs +from glances.core.glances_globals import logger + +# Import mandatory PySNMP lib try: from pysnmp.entity.rfc3413.oneliner import cmdgen except ImportError: - print("PySNMP library not found.") - print("Install using pip: # pip install pysnmp") + logger.critical(_("PySNMP library not found.")) + print(_("Install using pip: # pip install pysnmp")) sys.exit(2) diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index fb3c7570..2e34c9b9 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -22,11 +22,16 @@ import os import sys +# Import Glances libs +from glances.core.glances_globals import logger + +# Import mandatory Bottle lib try: from bottle import Bottle, template, static_file, TEMPLATE_PATH except ImportError: - print('Bottle module not found. Glances cannot start in web server mode.') - sys.exit(1) + logger.critical('Bottle module not found. Glances cannot start in web server mode.') + print(_("Install it using pip: # pip install bottle")) + sys.exit(2) class GlancesBottle(object): @@ -83,7 +88,10 @@ class GlancesBottle(object): # Init stats self.stats = stats - self._app.run(host=self.args.bind_address, port=self.args.port) + bindmsg = _("Glances web server started on http://{}:{}/").format(self.args.bind_address, self.args.port) + logger.info(bindmsg) + print(bindmsg) + self._app.run(host=self.args.bind_address, port=self.args.port, quiet=not self.args.debug) def end(self): """End the bottle.""" diff --git a/glances/outputs/glances_curses.py b/glances/outputs/glances_curses.py index e91c8c09..9223a3f9 100644 --- a/glances/outputs/glances_curses.py +++ b/glances/outputs/glances_curses.py @@ -248,7 +248,7 @@ class GlancesCurses(object): return self.pressedkey def end(self): - """Shutdown the curses window.""" + """Shutdown the curses window.""" if hasattr(curses, 'echo'): curses.echo() if hasattr(curses, 'nocbreak'):