def test_levelname_message(self): handler = BugsnagHandler() logger = logging.getLogger(__name__) logger.addHandler(handler) class MessageFilter(logging.Filter): def filter(self, record): record.levelname = None return True handler.addFilter(MessageFilter()) logger.info('The system is down') logger.removeHandler(handler) self.assertSentReportCount(1) json_body = self.server.received[0]['json_body'] event = json_body['events'][0] exception = event['exceptions'][0] self.assertEqual('LogMessage', exception['errorClass'])
def test_levelname_message(self): handler = BugsnagHandler() logger = logging.getLogger(__name__) logger.addHandler(handler) class MessageFilter(logging.Filter): def filter(self, record): record.levelname = None return True handler.addFilter(MessageFilter()) logger.info('The system is down') logger.removeHandler(handler) self.assertSentReportCount(1) json_body = self.server.received[0]['json_body'] event = json_body['events'][0] exception = event['exceptions'][0] self.assertEqual('LogMessage', exception['errorClass'])
def setup_logging(): """ Configure our logger """ logger = logging.getLogger() logger.handlers = [] if cmd_line.debug: log_level = logging.DEBUG else: log_level = logging.INFO logger.setLevel(log_level) context_filter = ContextFilter() logger.addFilter(context_filter.filter) # Log format formatter = logging.Formatter( fmt= "%(asctime)s [%(levelname)s] %(filename)s(%(lineno)d) %(funcName)s(): %(message)s", datefmt="%Y-%m-%d %H:%M:%S") # File logger try: file_handler = logging.FileHandler('/tmp/cnchi.log', mode='w') file_handler.setLevel(log_level) file_handler.setFormatter(formatter) logger.addHandler(file_handler) except PermissionError as permission_error: print("Can't open /tmp/cnchi.log : ", permission_error) # Stdout logger if cmd_line.verbose: # Show log messages to stdout stream_handler = logging.StreamHandler() stream_handler.setLevel(log_level) stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) if cmd_line.log_server: log_server = cmd_line.log_server if log_server == 'bugsnag': if not BUGSNAG_ERROR: # Bugsnag logger bugsnag_api = context_filter.api_key if bugsnag_api is not None: bugsnag.configure(api_key=bugsnag_api, app_version=info.CNCHI_VERSION, project_root='/usr/share/cnchi/cnchi', release_stage=info.CNCHI_RELEASE_STAGE) bugsnag_handler = BugsnagHandler(api_key=bugsnag_api) bugsnag_handler.setLevel(logging.WARNING) bugsnag_handler.setFormatter(formatter) bugsnag_handler.addFilter(context_filter.filter) bugsnag.before_notify( context_filter.bugsnag_before_notify_callback) logger.addHandler(bugsnag_handler) logging.info( "Sending Cnchi log messages to bugsnag server (using python-bugsnag)." ) else: logging.warning( "Cannot read the bugsnag api key, logging to bugsnag is not possible." ) else: logging.warning(BUGSNAG_ERROR) else: # Socket logger socket_handler = logging.handlers.SocketHandler( log_server, logging.handlers.DEFAULT_TCP_LOGGING_PORT) socket_formatter = logging.Formatter(formatter) socket_handler.setFormatter(socket_formatter) logger.addHandler(socket_handler) # Also add uuid filter to requests logs logger_requests = logging.getLogger( "requests.packages.urllib3.connectionpool") logger_requests.addFilter(context_filter.filter) uid = str(uuid.uuid1()).split("-") myuid = uid[3] + "-" + uid[1] + "-" + uid[2] + "-" + uid[4] logging.info("Sending Cnchi logs to {0} with id '{1}'".format( log_server, myuid))
def setup_logging(): """ Configure our logger """ logger = logging.getLogger() logger.handlers = [] if cmd_line.debug: log_level = logging.DEBUG else: log_level = logging.INFO logger.setLevel(log_level) context_filter = ContextFilter() logger.addFilter(context_filter.filter) # Log format formatter = logging.Formatter( fmt="%(asctime)s [%(levelname)s] %(filename)s(%(lineno)d) %(funcName)s(): %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) # File logger try: file_handler = logging.FileHandler("/tmp/DSGos_Installer.log", mode="w") file_handler.setLevel(log_level) file_handler.setFormatter(formatter) logger.addHandler(file_handler) except PermissionError as permission_error: print("Can't open /tmp/DSGos_Installer.log : ", permission_error) # Stdout logger if cmd_line.verbose: # Show log messages to stdout stream_handler = logging.StreamHandler() stream_handler.setLevel(log_level) stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) if cmd_line.log_server: log_server = cmd_line.log_server if log_server == "bugsnag": if not BUGSNAG_ERROR: # Bugsnag logger bugsnag_api = context_filter.api_key if bugsnag_api is not None: bugsnag.configure( api_key=bugsnag_api, app_version=info.DSGos_Installer_VERSION, project_root="/usr/share/DSGos-Installer", release_stage=info.DSGos_Installer_RELEASE_STAGE, ) bugsnag_handler = BugsnagHandler(api_key=bugsnag_api) bugsnag_handler.setLevel(logging.WARNING) bugsnag_handler.setFormatter(formatter) bugsnag_handler.addFilter(context_filter.filter) bugsnag.before_notify(context_filter.bugsnag_before_notify_callback) logger.addHandler(bugsnag_handler) logging.info("Sending DSGos_Installer log messages to bugsnag server (using python-bugsnag).") else: logging.warning("Cannot read the bugsnag api key, logging to bugsnag is not possible.") else: logging.warning(BUGSNAG_ERROR) else: # Socket logger socket_handler = logging.handlers.SocketHandler(log_server, logging.handlers.DEFAULT_TCP_LOGGING_PORT) socket_formatter = logging.Formatter(formatter) socket_handler.setFormatter(socket_formatter) logger.addHandler(socket_handler) # Also add uuid filter to requests logs logger_requests = logging.getLogger("requests.packages.urllib3.connectionpool") logger_requests.addFilter(context_filter.filter) uid = str(uuid.uuid1()).split("-") myuid = uid[3] + "-" + uid[1] + "-" + uid[2] + "-" + uid[4] logging.info("Sending DSGos_Installer logs to {0} with id '{1}'".format(log_server, myuid))