print in plpython not appearing in logs

From: Ludwig Isaac Lim <ludz_lim(at)yahoo(dot)com>
To: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: print in plpython not appearing in logs
Date: 2022-12-02 11:59:18
Message-ID: 1649936435.214554.1669982358413@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I'm having problems wherein my print() statements inside my plpython stored proc are not appearing in postgresql log. I tried setting the file=sys.stderr

To reproduce:

CREATE OR REPLACE PROCEDURE p_ludwig_test()
AS
$$
       import sys
       try:
              x = 1 / 0
       except:
              plpy.log("hello")
              print("oink oink", file=sys.stderr)
              print("oink oink - v2")
              plpy.log("haha")
$$
LANGUAGE plpython3u;

call p_ludwig_test()

Output:
---------------------
2022-12-02 11:46:11.324 UTC [19390] LOG:  hello
2022-12-02 11:46:11.324 UTC [19390] CONTEXT:  PL/Python procedure "p_ludwig_test"
2022-12-02 11:46:11.324 UTC [19390] STATEMENT:  call p_ludwig_test();
2022-12-02 11:46:11.324 UTC [19390] LOG:  haha
2022-12-02 11:46:11.324 UTC [19390] CONTEXT:  PL/Python procedure "p_ludwig_test"
2022-12-02 11:46:11.324 UTC [19390] STATEMENT:  call p_ludwig_test();

Notice that the "oink oink"  is  not there.

Relevant logging configuration:
logging_collector = on    
log_directory = 'logs'  
log_min_messages = info 
log_min_error_statement = error 

PG version
-------------------
 PostgreSQL 14.6 on aarch64-unknown-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-15), 64-bit

The reason why I'm trying to use print() is because plpy logger is quite verbose. Each logging will output 3 line

for example:
   plpy.log("hello")

Will generate the following 3 lines in the log:
2022-12-02 11:46:11.324 UTC [19390] LOG:  hello
2022-12-02 11:46:11.324 UTC [19390] CONTEXT:  PL/Python procedure "p_ludwig_test"
2022-12-02 11:46:11.324 UTC [19390] STATEMENT:  call p_ludwig_test();

Another thing is there is another stored procedure that I have wherein the print() to stderr actually works, so I'm not sure what I'm doing wrong.

Thank you in advance,
Ludwig

Responses

Browse pgsql-general by date

  From Date Subject
Next Message jacktby@gmail.com 2022-12-02 12:00:31 modify planner codes, get failed
Previous Message Amitabh Kant 2022-12-02 10:33:18 Re: Finding free time period on non-continous tstzrange field values