3131except ImportError : # pragma: no cover - environment without psycopg2
3232 psycopg2 = None # type: ignore
3333
34+ from .trace_logging import log_payload_at_trace
35+
3436# Define a unified psycopg2 error base for safe exception handling even if psycopg2 missing
3537if psycopg2 is not None : # type: ignore
3638 try : # pragma: no cover - attribute presence depends on installed psycopg2 variant
@@ -47,20 +49,20 @@ class PsycopgError(Exception): # type: ignore
4749
4850
4951# Module level globals for typing
50- _logger : logging .Logger = logging .getLogger (__name__ )
52+ logger : logging .Logger = logging .getLogger (__name__ )
5153POSTGRES : Dict [str , Any ] = {"database" : "" }
5254
5355
54- def init (logger : logging .Logger ) -> None :
56+ def init (logger_instance : logging .Logger ) -> None :
5557 """Initialize Postgres credentials either from AWS Secrets Manager or fallback empty config.
5658
5759 Args:
58- logger : Shared application logger.
60+ logger_instance : Shared application logger.
5961 """
60- global _logger # pylint: disable=global-statement
62+ global logger # pylint: disable=global-statement
6163 global POSTGRES # pylint: disable=global-statement
6264
63- _logger = logger
65+ logger = logger_instance
6466
6567 secret_name = os .environ .get ("POSTGRES_SECRET_NAME" , "" )
6668 secret_region = os .environ .get ("POSTGRES_SECRET_REGION" , "" )
@@ -72,7 +74,7 @@ def init(logger: logging.Logger) -> None:
7274 else :
7375 POSTGRES = {"database" : "" }
7476
75- _logger .debug ("Initialized POSTGRES writer" )
77+ logger .debug ("Initialized POSTGRES writer" )
7678
7779
7880def postgres_edla_write (cursor , table : str , message : Dict [str , Any ]) -> None :
@@ -83,7 +85,7 @@ def postgres_edla_write(cursor, table: str, message: Dict[str, Any]) -> None:
8385 table: Target table name.
8486 message: Event payload.
8587 """
86- _logger .debug ("Sending to Postgres - %s" , table )
88+ logger .debug ("Sending to Postgres - %s" , table )
8789 cursor .execute (
8890 f"""
8991 INSERT INTO { table }
@@ -142,7 +144,7 @@ def postgres_run_write(cursor, table_runs: str, table_jobs: str, message: Dict[s
142144 table_jobs: Jobs table name.
143145 message: Event payload (includes jobs array).
144146 """
145- _logger .debug ("Sending to Postgres - %s and %s" , table_runs , table_jobs )
147+ logger .debug ("Sending to Postgres - %s and %s" , table_runs , table_jobs )
146148 cursor .execute (
147149 f"""
148150 INSERT INTO { table_runs }
@@ -222,7 +224,7 @@ def postgres_test_write(cursor, table: str, message: Dict[str, Any]) -> None:
222224 table: Target table name.
223225 message: Event payload.
224226 """
225- _logger .debug ("Sending to Postgres - %s" , table )
227+ logger .debug ("Sending to Postgres - %s" , table )
226228 cursor .execute (
227229 f"""
228230 INSERT INTO { table }
@@ -265,12 +267,14 @@ def write(topic_name: str, message: Dict[str, Any]) -> Tuple[bool, Optional[str]
265267 """
266268 try :
267269 if not POSTGRES .get ("database" ):
268- _logger .debug ("No Postgres - skipping" )
270+ logger .debug ("No Postgres - skipping" )
269271 return True , None
270272 if psycopg2 is None : # type: ignore
271- _logger .debug ("psycopg2 not available - skipping actual Postgres write" )
273+ logger .debug ("psycopg2 not available - skipping actual Postgres write" )
272274 return True , None
273275
276+ log_payload_at_trace (logger , "Postgres" , topic_name , message )
277+
274278 with psycopg2 .connect ( # type: ignore[attr-defined]
275279 database = POSTGRES ["database" ],
276280 host = POSTGRES ["host" ],
@@ -287,13 +291,13 @@ def write(topic_name: str, message: Dict[str, Any]) -> Tuple[bool, Optional[str]
287291 postgres_test_write (cursor , "public_cps_za_test" , message )
288292 else :
289293 msg = f"unknown topic for postgres { topic_name } "
290- _logger .error (msg )
294+ logger .error (msg )
291295 return False , msg
292296
293297 connection .commit () # type: ignore
294298 except (RuntimeError , PsycopgError ) as e : # narrowed exception set
295299 err_msg = f"The Postgres writer with failed unknown error: { str (e )} "
296- _logger . error (err_msg )
300+ logger . exception (err_msg )
297301 return False , err_msg
298302
299303 return True , None
0 commit comments