Ejemplo n.º 1
0
    def test_string_format(self):
        STRING_FORMAT = '''{
            "Name":            "name",
            "Levelno":         "levelno",
            "Levelname":       "levelname",
            "Pathname":        "pathname",
            "Filename":        "filename",
            "Module":          "module",
            "Lineno":          "lineno",
            "FuncName":        "funcName",
            "Created":         "created",
            "Asctime":         "asctime",
            "Msecs":           "msecs",
            "RelativeCreated": "relativeCreated",
            "Thread":          "thread",
            "ThreadName":      "threadName",
            "Process":         "process",
            "Message":         "message"
        }'''
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(STRING_FORMAT, datefmt)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info("test %s format", 'string')
Ejemplo n.º 2
0
    def test_ordered_dict_format(self):
        ORDERED_DICT_FORMAT = OrderedDict([
            ("name", "name"),
            ("levelno", "levelno"),
            ("levelname", "levelname"),
            ("pathname", "pathname"),
            ("filename", "filename"),
            ("module", "module"),
            ("lineno", "lineno"),
            ("funcName", "funcName"),
            ("created", "created"),
            ("asctime", "asctime"),
            ("msecs", "msecs"),
            ("relativeCreated", "relativeCreated"),
            ("thread", "thread"),
            ("threadName", "threadName"),
            ("process", "process"),
            ("message", "message")
        ])
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(ORDERED_DICT_FORMAT, datefmt)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info("test %s format", 'ordered dict')
Ejemplo n.º 3
0
    def test_record_custom_attrs_with_kwargs(self):
        def _new_custom_attribute_status(**record_attrs):
            if record_attrs['levelname'] in ['ERROR', 'CRITICAL']:
                return 'failed'
            else:
                return 'success'

        RECORD_CUSTOM_ATTRS = {
            'status': _new_custom_attribute_status,
        }

        RECORD_CUSTOM_FORMAT = OrderedDict([
            ("status", "status"),  # new custom attribute
            ("log", "message")
        ])
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(
            RECORD_CUSTOM_FORMAT,
            record_custom_attrs=RECORD_CUSTOM_ATTRS
        )
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)
        root.info('test record custom attrs with kwargs')
        root.error('test record custom attrs with kwargs')
Ejemplo n.º 4
0
    def test_dict_format(self):
        DICT_FORMAT = {
            "name": "name",
            "levelno": "levelno",
            "levelname": "levelname",
            "pathname": "pathname",
            "filename": "filename",
            "module": "module",
            "lineno": "lineno",
            "funcName": "funcName",
            "created": "created",
            "asctime": "asctime",
            "msecs": "msecs",
            "relativeCreated": "relativeCreated",
            "thread": "thread",
            "threadName": "threadName",
            "process": "process",
            "message": "message"
        }
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(DICT_FORMAT, datefmt)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info("test %s format", 'dict')
Ejemplo n.º 5
0
    def test_format_style(self):
        FORMT_STYLE = {
            "name": "name",
            "levelno": "levelno",
            "levelname": "levelname",
            "pathname": "pathname",
            "filename": "filename",
            "module": "module",
            "lineno": "lineno",
            "funcName": "funcName",
            "created": "created",
            "asctime": "asctime",
            "msecs": "msecs",
            "relativeCreated": "relativeCreated",
            "thread": "thread",
            "threadName": "threadName",
            "process": "process",
            "message": "{message}"
        }

        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(FORMT_STYLE, datefmt, '{')
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info("test %s style", 'format')
Ejemplo n.º 6
0
 def __apply_json_formatter(self):
     """ changes json log format for all handlers with JsonFormatter """
     formatter = JsonFormatter(CUSTOM_FORMAT,
                               record_custom_attrs=RECORD_CUSTOM_ATTRS,
                               separators=(',', ':'),
                               mix_extra=True)
     for handler in self.__logger.parent.handlers:
         if isinstance(handler.formatter, JsonFormatter):
             handler.setFormatter(formatter)
Ejemplo n.º 7
0
    def test_mix_extra_multi_formatter(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        fh = logging.FileHandler('jsonformatter.log')
        formatter = JsonFormatter(ensure_ascii=False, mix_extra=True, indent=4)
        fh.setFormatter(formatter)
        fh.setLevel(logging.INFO)
        root.addHandler(fh)

        sh = logging.StreamHandler()
        formatter = JsonFormatter(ensure_ascii=False, mix_extra=True, indent=4)
        sh.setFormatter(formatter)
        sh.setLevel(logging.INFO)
        root.addHandler(sh)

        root.info('test mix extra multi formatter',
                  extra={'extra': 'extra content'})
Ejemplo n.º 8
0
def set_warning_to_all_loggers_except(logger_name):
    formatter = JsonFormatter(STRING_FORMAT)
    sh = logging.StreamHandler(stream=sys.stdout)
    for name in logging.root.manager.loggerDict:
        if name not in logger_name:
            logger = logging.getLogger(name)
            sh.setFormatter(formatter)
            logger.addHandler(sh)
            logger.setLevel(logging.WARNING)
Ejemplo n.º 9
0
    def test_mix_extra(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        sh = logging.StreamHandler()
        formatter = JsonFormatter(ensure_ascii=False, mix_extra=True, indent=4)
        sh.setFormatter(formatter)
        sh.setLevel(logging.INFO)
        root.addHandler(sh)
        root.info('test mix extra in fmt', extra={'extra': 'extra content'})
def get_logger(name):
    root_logger = logging.getLogger(name)
    root_logger.setLevel(logging.DEBUG)

    formatter = JsonFormatter(STRING_FORMAT)

    sh = logging.StreamHandler()
    sh.setFormatter(formatter)
    sh.setLevel(logging.DEBUG)

    root_logger.addHandler(sh)
    return root_logger
Ejemplo n.º 11
0
def handler(level: Union[SupportsInt, Text] = INFO) -> Logger:
    fmt = OrderedDict((
        ("Name", "name"),
        ("Asctime", "asctime"),
        ("LevelName", "levelname"),
        ("Message", "message"),
    ))
    formatter = JsonFormatter(fmt, mix_extra=True, default=converter)
    handler = StreamHandler(stderr)
    handler.setLevel(level)
    handler.setFormatter(formatter)
    return handler
Ejemplo n.º 12
0
    def test_mix_extra_position_is_mix(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        sh = logging.StreamHandler()
        formatter = JsonFormatter(
            ensure_ascii=False, encoding='gbk', mix_extra=True, mix_extra_position='mix', indent=4)
        sh.setFormatter(formatter)
        sh.setLevel(logging.INFO)
        root.addHandler(sh)
        root.info('test mix extra position is mix',
                  extra={'extra': 'extra content'})
Ejemplo n.º 13
0
    def test_template_style_unicode(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        formatter = JsonFormatter("""{"log":"${message}"}""", style="$", encoding='gbk', ensure_ascii=False)

        sh = logging.StreamHandler()
        sh.setFormatter(formatter)
        sh.setLevel(logging.INFO)

        root.addHandler(sh)
        root.info('test template style unicode: %s', '中文')
Ejemplo n.º 14
0
    def test_json_dumps_parameter_ensure_ascii_false(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        sh = logging.StreamHandler()
        formatter = JsonFormatter(ensure_ascii=False, encoding='gbk')
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info('test json dumps parameter `ensure_ascii` False: ����')
Ejemplo n.º 15
0
    def test_percent_style_unicode(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        formatter = JsonFormatter(
            """{"log":"%(message)s"}""", style="%", encoding='gbk', ensure_ascii=False)

        sh = logging.StreamHandler()
        sh.setFormatter(formatter)
        sh.setLevel(logging.INFO)

        root.addHandler(sh)
        root.info('test percent style unicode: %s', '����')
Ejemplo n.º 16
0
    def test_default_config(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter()
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info("test %s config", 'default')
Ejemplo n.º 17
0
    def test_string_config(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(STRING_FORMAT, datefmt)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info("test %s format", 'string')
Ejemplo n.º 18
0
    def test_ordered_dict_config(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(ORDERED_DICT_FORMAT, datefmt)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info("test dict format")
Ejemplo n.º 19
0
    def test_multi_handlers(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        sh = logging.StreamHandler()
        formatter = JsonFormatter(ensure_ascii=False, encoding='gbk')
        sh.setFormatter(formatter)
        sh.setLevel(logging.INFO)
        root.addHandler(sh)

        sh = logging.StreamHandler()
        formatter = JsonFormatter(ensure_ascii=False, encoding='gbk')
        sh.setFormatter(formatter)
        sh.setLevel(logging.INFO)
        root.addHandler(sh)

        sh = logging.StreamHandler()
        formatter = logging.Formatter('%(message)s')
        sh.setFormatter(formatter)
        sh.setLevel(logging.INFO)
        root.addHandler(sh)

        root.info('test multi handlers')
Ejemplo n.º 20
0
    def test_indent(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(ORDERED_DICT_FORMAT, datefmt, indent=4)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info('test indent')
Ejemplo n.º 21
0
    def test_json_dumps_parameter_indent(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(indent=4)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info('test json dumps parameter `index`: 4')
Ejemplo n.º 22
0
    def test_log_exception(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        sh = logging.StreamHandler()
        formatter = JsonFormatter()
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)
        try:
            1 / 0
        except Exception as e:
            root.exception('test log exception')
Ejemplo n.º 23
0
    def test_log_exception(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = '%Y-%m-%d %H:%M:%S'
        sh = logging.StreamHandler()
        formatter = JsonFormatter(ORDERED_DICT_FORMAT, datefmt)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)
        try:
            1 / 0
        except Exception as e:
            root.exception('test log exception')
Ejemplo n.º 24
0
    def test_ensure_ascii_false(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(ORDERED_DICT_FORMAT,
                                  datefmt,
                                  ensure_ascii=False)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info('test ensure ascii false: 中文')
Ejemplo n.º 25
0
    def test_multi_value_in_one_key(self):

        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(MULTI_VALUE_FORMAT,
                                  datefmt,
                                  record_custom_attrs=RECORD_CUSTOM_ATTRS)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)
        root.info('test multi value in one key')
Ejemplo n.º 26
0
def get_log(get_function_name, logging_level=logging.DEBUG):
    time = datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S")
    logger_name = get_function_name

    test_logger = logging.getLogger(logger_name)
    formatter = JsonFormatter(STRING_FORMAT)
    sh = logging.StreamHandler(stream=sys.stdout)
    sh.setFormatter(formatter)
    test_logger.addHandler(sh)
    test_logger.setLevel(logging_level)

    test_logger.info("*"*41 + 'TEST_SETUP' + "*"*40)
    test_logger.info("initializing setUp operations for test {} at ".format(get_function_name, time))
    set_warning_to_all_loggers_except(logger_name)
    yield test_logger
    test_logger.info("ending logging for test for function {}".format(get_function_name))
Ejemplo n.º 27
0
    def test_record_custom_attrs(self):

        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(RECORD_CUSTOM_FORMAT,
                                  datefmt,
                                  record_custom_attrs=RECORD_CUSTOM_ATTRS)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)
        root.info('test record custom attrs')
Ejemplo n.º 28
0
    def test_multi_value_in_one_key(self):
        MULTI_VALUE_FORMAT = {
            "multi value": "%(name)s - %(levelno)s - %(levelname)s - %(pathname)s - %(filename)s - %(module)s - %(lineno)d - %(funcName)s - %(created)f - %(asctime)s - %(msecs)d - %(relativeCreated)d - %(thread)d - %(threadName)s - %(process)d - %(message)s"
        }
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(
            MULTI_VALUE_FORMAT, datefmt)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)
        root.info('test multi value in one key')
Ejemplo n.º 29
0
    def test_record_custom_attrs(self):
        RECORD_CUSTOM_ATTRS = {
            'asctime':
            lambda: datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S.%f'),
            'user id':
            lambda: str(random.random())[2:10]
        }
        RECORD_CUSTOM_FORMAT = OrderedDict([
            ("user id", "user id"),  # new custom attrs
            ("name", "name"),
            ("levelno", "levelno"),
            ("levelname", "levelname"),
            ("pathname", "pathname"),
            ("filename", "filename"),
            ("module", "module"),
            ("lineno", "lineno"),
            ("funcName", "funcName"),
            ("created", "created"),
            ("asctime", "asctime"),  # use custom format replace default.
            ("msecs", "msecs"),
            ("relativeCreated", "relativeCreated"),
            ("thread", "thread"),
            ("threadName", "threadName"),
            ("process", "process"),
            ("message", "message")
        ])
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        datefmt = None
        sh = logging.StreamHandler()
        formatter = JsonFormatter(RECORD_CUSTOM_FORMAT,
                                  datefmt,
                                  record_custom_attrs=RECORD_CUSTOM_ATTRS)
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)
        root.info('test record custom attrs')
Ejemplo n.º 30
0
    def test_mix_extra(self):
        root = logging.getLogger()
        root.setLevel(logging.INFO)

        sh = logging.StreamHandler()
        formatter = JsonFormatter(
            ensure_ascii=False, encoding='gbk', mix_extra=True, indent=4)
        sh.setFormatter(formatter)
        sh.setLevel(logging.INFO)
        root.addHandler(sh)
        root.info(
            'test mix extra in fmt',
            extra={
                'extra1': 'extra content 1',
                'extra2': 'extra content 2'
            })
        root.info(
            'test mix extra in fmt',
            extra={
                'extra3': 'extra content 3',
                'extra4': 'extra content 4'
            })