|
|
- import os
- from unittest import TestCase
-
- import logging
-
- import sys
-
- import re
- from logzio.handler import LogzioHandler
-
-
- class TestLogzioHandler(TestCase):
- def setUp(self):
- self.handler = LogzioHandler('moo')
-
- def test_json(self):
- formatter = logging.Formatter(
- '{ "appname":"%(name)s", "functionName":"%(funcName)s", \"lineNo":"%(lineno)d", "severity":"%('
- 'levelname)s", "message":"%(message)s"}')
- self.handler.setFormatter(formatter)
-
- record = logging.LogRecord(
- name='my-logger',
- level=0,
- pathname='handler_test.py',
- lineno=10,
- msg="this is a test: moo.",
- args=[],
- exc_info=None,
- func='test_json'
- )
-
- formatted_message = self.handler.format_message(record)
- formatted_message["@timestamp"] = None
-
- self.assertDictEqual(
- formatted_message,
- {
- '@timestamp': None,
- 'appname': 'my-logger',
- 'functionName': 'test_json',
- 'lineNo': '10',
- 'line_number': 10,
- 'log_level': 'NOTSET',
- 'logger': 'my-logger',
- 'message': 'this is a test: moo.',
- 'path_name': 'handler_test.py',
- 'severity': 'NOTSET',
- 'type': 'python'
- }
- )
-
- def test_string(self):
- record = logging.LogRecord(
- name='my-logger',
- level=0,
- pathname='handler_test.py',
- lineno=10,
- msg="this is a test: moo.",
- args=[],
- exc_info=None,
- func='test_json'
- )
-
- formatted_message = self.handler.format_message(record)
- formatted_message["@timestamp"] = None
-
- self.assertDictEqual(
- formatted_message,
- {
- '@timestamp': None,
- 'line_number': 10,
- 'log_level': 'NOTSET',
- 'logger': 'my-logger',
- 'message': 'this is a test: moo.',
- 'path_name': 'handler_test.py',
- 'type': 'python'
- }
- )
-
- def test_extra_formatting(self):
- record = logging.LogRecord(
- name='my-logger',
- level=0,
- pathname='handler_test.py',
- lineno=10,
- msg="this is a test: moo.",
- args=[],
- exc_info=None,
- func='test_json'
- )
-
- record.__dict__["extra_key"] = "extra_value"
- record.__dict__["module"] = "testing"
- formatted_message = self.handler.format_message(record)
- formatted_message["@timestamp"] = None
-
- self.assertDictEqual(
- formatted_message,
- {
- '@timestamp': None,
- 'line_number': 10,
- 'log_level': 'NOTSET',
- 'logger': 'my-logger',
- 'message': 'this is a test: moo.',
- 'path_name': 'handler_test.py',
- 'type': 'python',
- 'extra_key': 'extra_value'
- }
- )
-
- def test_format_string_message(self):
- record = logging.LogRecord(
- name='my-logger',
- level=0,
- pathname='handler_test.py',
- lineno=10,
- msg="this is a test: %s.",
- args=('moo',),
- exc_info=None,
- func='test_json'
- )
-
- formatted_message = self.handler.format_message(record)
- formatted_message["@timestamp"] = None
-
- self.assertDictEqual(
- formatted_message,
- {
- '@timestamp': None,
- 'line_number': 10,
- 'log_level': 'NOTSET',
- 'logger': 'my-logger',
- 'message': 'this is a test: moo.',
- 'path_name': 'handler_test.py',
- 'type': 'python'
- }
- )
-
- def test_exception(self):
- formatter = logging.Formatter('{"tags": ["staging", "experimental"], "appname": "my-service"}', validate=False)
- self.handler.setFormatter(formatter)
-
- try:
- raise ValueError("oops.")
- except:
- exc_info = sys.exc_info()
-
- record = logging.LogRecord(
- name='my-logger',
- level=0,
- pathname='handler_test.py',
- lineno=10,
- msg='exception test:',
- args=[],
- exc_info=exc_info,
- func='test_json'
- )
-
- formatted_message = self.handler.format_message(record)
- formatted_message["@timestamp"] = None
-
- formatted_message["exception"] = formatted_message["exception"].replace(os.path.abspath(__file__), "")
- formatted_message["exception"] = re.sub(r", line \d+", "", formatted_message["exception"])
-
- self.assertDictEqual(
- {
- '@timestamp': None,
- 'appname': 'my-service',
- 'line_number': 10,
- 'log_level': 'NOTSET',
- 'logger': 'my-logger',
- 'message': 'exception test:',
- 'exception': 'Traceback (most recent call last):\n\n File "", in test_exception\n raise ValueError("oops.")\n\nValueError: oops.\n',
- 'path_name': 'handler_test.py',
- 'type': 'python',
- 'tags': ['staging', 'experimental']
- },
- formatted_message
- )
|