def _get_logger(): '''find out the caller's module name and get or create a corresponding logger. if caller has no module, return root logger.''' if __istest: return testlogger caller_frm = inspect.stack()[2] caller_mod = inspect.getmodule(caller_frm[0]) name = None if caller_mod is None else caller_mod.__name__ orgpath = caller_frm[1] orgfile = os.path.basename(orgpath) caller_info = { 'org_filename': orgfile, 'org_lineno': caller_frm[2], 'org_funcName': caller_frm[3], #'org_module': name if name else os.path.splitext(orgfile)[0], 'org_pathname': orgpath, } logger = logging.LoggerAdapter(logging.getLogger(name), caller_info) return logger
handler_console_priority.addFilter(relocator) handler_file_error = logging.FileHandler(os.path.join( pathprovider.getUserDataPath(), 'error.log'), mode='a', delay=True) handler_file_error.formatter = formatter_full handler_file_error.level = ERROR handler_file_error.addFilter(relocator) logging.root.setLevel(LOGLEVEL) logging.root.addHandler(handler_console) logging.root.addHandler(handler_console_priority) logging.root.addHandler(handler_file_error) testlogger = logging.getLogger('test') testlogger.setLevel(CRITICAL) testlogger.addHandler(handler_console) testlogger.addHandler(handler_console_priority) testlogger.propagate = False logging.getLogger('cherrypy.error').setLevel(WARNING) def debug(msg, *args, **kwargs): '''logs a message with severity DEBUG on the caller's module logger. uses the root logger if caller has no module.''' _get_logger().debug(msg, *args, **kwargs) def info(msg, *args, **kwargs):
handler_console_priority = logging.StreamHandler(stream=sys.stderr) handler_console_priority.formatter = formatter_brief handler_console_priority.level = WARNING handler_console_priority.addFilter(relocator) handler_file_error = logging.FileHandler(os.path.join(pathprovider.getUserDataPath(), 'error.log'), mode='a', delay=True) handler_file_error.formatter = formatter_full handler_file_error.level = ERROR handler_file_error.addFilter(relocator) logging.root.setLevel(LOGLEVEL) logging.root.addHandler(handler_console) logging.root.addHandler(handler_console_priority) logging.root.addHandler(handler_file_error) testlogger = logging.getLogger('test') testlogger.setLevel(CRITICAL) testlogger.addHandler(handler_console) testlogger.addHandler(handler_console_priority) testlogger.propagate = False logging.getLogger('cherrypy.error').setLevel(WARNING) def debug(msg, *args, **kwargs): '''logs a message with severity DEBUG on the caller's module logger. uses the root logger if caller has no module.''' _get_logger().debug(msg, *args, **kwargs)