2016-09-06 30 views
1

私のアプリケーションに問題があります。私の要件の1つは、ここで起こっているのと同様に、PLPGSQL関数を呼び出したときにpostgresで出力されるメッセージをキャプチャすることです。npgsqlでpostgresメッセージを取得

Get warning messages through psycopg2

私の問題を除いて、npgsqlにあります。私は、ログマネージャが設定している:

NpgsqlLogManager.Provider = new ConsoleLoggingProvider(NpgsqlLogLevel.Trace, true, true); 

をそして私はこの呼び出しを行います。

_db.ExecuteScalar("SELECT test_warning();"); 

test_warningは、カスタムSQL関数です:

CREATE OR REPLACE FUNCTION test_warning() 
    RETURNS void AS 
$BODY$ 
begin 
raise info 'this is only a test'; 
end; 
$BODY$ 
    LANGUAGE plpgsql VOLATILE; 

_dbIDbConnectionで、クエリはDapperを使用して行われます。警告/情報メッセージの

DEBUG [40560] Opened connection to (Database Server) 
TRACE [40560] Start user action 
TRACE [40560] ExecuteNonScalar 
DEBUG [40560] Executing statement(s): 

         SELECT test_warning() 
TRACE [40560] End user action 
TRACE [40560] Closing connection 
TRACE [40560] Really closing connection 
DEBUG [40560] Connection closed 

は言及:私のログメッセージでは、私は関数の呼び出しだけでなく、いくつかの他の接続情報を取得しています。

+1

[処理に注目してください](https://www.postgresql.org/ docs/current/static/libpq-notice-processing.html)接続ハンドラへのアクセス権があれば、それは簡単です。 – Abelisto

答えて

0

まず、関数が存在することを保証します...私はpostgresを起動し、そのクエリを実行できませんでしたので、それはボックス機能ではありません。

次に、私は

...私が呼び出しを行ったか

_db.CommandText = "SELECT test_warning()"; 
_db.ExecuteScalar(); 
を調整してみたい。ここのドキュメントです: http://www.npgsql.org/doc/index.html

関連する問題