Exemple #1
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')
Exemple #2
0
    def test_template_style(self):
        TEMPLATE_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(TEMPLATE_STYLE, datefmt, '$')
        sh.setFormatter(formatter)

        sh.setLevel(logging.INFO)

        root.addHandler(sh)

        root.info("test %s style", 'template')
Exemple #3
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)
Exemple #4
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'})
Exemple #5
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)
Exemple #6
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
    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', '中文')
    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'})
Exemple #10
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
    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: ����')
    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', '����')
    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')
    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')
Exemple #15
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")
Exemple #16
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')
Exemple #17
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')
    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')
    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')
Exemple #20
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')
Exemple #21
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))
Exemple #22
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')
Exemple #23
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')
Exemple #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: 中文')
    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')
Exemple #26
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')
    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'
            })
Exemple #28
0
def log_request_info():
	file_handler = logging.FileHandler('request.log')
	#file_handler.setLevel(logging.INFO)
	sh = logging.StreamHandler()
	formatter = JsonFormatter(
		ensure_ascii=False,
		mix_extra=True,
		mix_extra_position='tail'  # optional: head, mix
	)
	file_handler.setFormatter(formatter)
	sh.setFormatter(formatter)
	root = logging.getLogger()
	root.setLevel(logging.INFO)
	root.addHandler(file_handler)
	root.addHandler(sh)

	meth = request.method
	path = request.path
	header = str(request.headers)
	root.info('test mix extra in fmt',extra={'extra1': meth,'extra2': path})
	root.info('test mix extra in fmt',extra={'extra3': header,'extra4': 'extra content 4'})

	print(str(request.headers))
Exemple #29
0
    def loggingOverride(self, name: str, logLevel=logging.WARNING):
        STRING_FORMAT = """{
            "datetime": "asctime",
            "levelName": "levelname",
            "module": "module",
            "lineNumber": "lineno",
            "process": "process",
            "message": "message"
        }"""

        self.logger = logging.getLogger(name)
        self.logger.setLevel(logLevel)
        formatter = JsonFormatter(STRING_FORMAT,
                                  mix_extra=True,
                                  mix_extra_position="tail")

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

        self.logger.addHandler(sh)

        return self.logger
RECORD_CUSTOM_FORMAT = OrderedDict([
    # custom record attributes start
    ("Url", "url"),
    ("User", "user"),
    ("Email", "email"),
    ("Status", "status"),
    # custom record attributes end
    ("Name", "name"),
    ("Levelno", "levelno"),
    ("Levelname", "levelname"),
    ("Pathname", "pathname"),
    ("Module", "module"),
    ("Lineno", "lineno"),
    ("FuncName", "funcName"),
    ("Asctime", "asctime"),
    ("Message", "message")
])

formatter = JsonFormatter(RECORD_CUSTOM_FORMAT,
                          record_custom_attrs=RECORD_CUSTOM_ATTRS,
                          ensure_ascii=False)

kafka_handler = KafkaLoggingHandler(["52.78.62.228:9092"],
                                    topic='flask_all_logs')

default_handler.setFormatter(formatter)
kafka_handler.setFormatter(formatter)
app.logger.setLevel(logging.INFO)
app.logger.addHandler(kafka_handler)
app.logger.info(json.dumps({'info': 'Flask server open'}))