首页 > 解决方案 > 如何将红移控制台输出传递给记录器?

问题描述

我想使用psycopg2并执行一些 SQL 语句连接到 redshift 服务器。我在气流服务器上安排这个并通过 PythonOperator 运行。我希望将 redshift 服务器控制台输出(STOUT) 传递回LoggingConnection,但它似乎只传递了执行的查询。

这样做的目的是能够调试上游问题并记录 ETL 元数据(在作业的上下文中)。这可能吗??

实例化一个logger对象并conn使用记录器进行初始化。这有效,但除了执行的查询之外没有提供任何信息。

import pandas as pd
import logging
import psycopg2 as pg
import sys
from psycopg2.extras import LoggingConnection

conn = pg.connect(<.....>)
conn.autocommit = True

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.addHandler(logging.StreamHandler(sys.stdout))
conn.initialize(logger)

cur.execute("INSERT INTO tableA <select...>")

# Example of what I want to Log:
# [2019-07-15 15:59:51] 2000 rows inserted... in 2 s 318 ms (execution: 2 s 279 ms, fetching: 39 ms)

我希望记录器从服务器控制台传递所有输出,模拟如果他们在本地运行它会看到什么。

标签: pythonamazon-redshiftpsycopg2

解决方案


推荐阅读