feat(common): complete Phase 1 - project config, structured logging, and ClickHouse DDL
This commit is contained in:
50
tests/test_logging.py
Normal file
50
tests/test_logging.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import io
|
||||
import json
|
||||
import logging
|
||||
import unittest
|
||||
from app.common.logging import StructuredJsonFormatter, setup_logger
|
||||
|
||||
|
||||
class TestStructuredJsonFormatter(unittest.TestCase):
|
||||
def test_log_format_structure(self):
|
||||
stream = io.StringIO()
|
||||
handler = logging.StreamHandler(stream)
|
||||
handler.setFormatter(StructuredJsonFormatter(service_name="test-service"))
|
||||
|
||||
logger = logging.getLogger("test_logger")
|
||||
logger.setLevel(logging.INFO)
|
||||
logger.addHandler(handler)
|
||||
|
||||
logger.info("Batch processed successfully", extra={"raw_id": "raw-12345"})
|
||||
|
||||
output = stream.getvalue().strip()
|
||||
data = json.loads(output)
|
||||
|
||||
self.assertIn("timestamp", data)
|
||||
self.assertEqual(data["level"], "INFO")
|
||||
self.assertEqual(data["service"], "test-service")
|
||||
self.assertEqual(data["raw_id"], "raw-12345")
|
||||
self.assertEqual(data["event"], "Batch processed successfully")
|
||||
|
||||
def test_log_format_null_raw_id(self):
|
||||
stream = io.StringIO()
|
||||
handler = logging.StreamHandler(stream)
|
||||
handler.setFormatter(StructuredJsonFormatter(service_name="test-service"))
|
||||
|
||||
logger = logging.getLogger("test_logger_null")
|
||||
logger.setLevel(logging.INFO)
|
||||
logger.addHandler(handler)
|
||||
|
||||
logger.info("Server started on port 8000")
|
||||
|
||||
output = stream.getvalue().strip()
|
||||
data = json.loads(output)
|
||||
|
||||
self.assertIn("timestamp", data)
|
||||
self.assertEqual(data["level"], "INFO")
|
||||
self.assertIsNone(data["raw_id"])
|
||||
self.assertEqual(data["event"], "Server started on port 8000")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user