On 05/31/2018 12:18 PM, Ian Bell wrote:
Hello Adrian,
Yes, if I call the function in PSQL then the expected message is displayed
the console display. Here is what is displayed in PSQL:
testdb=# select * from test.testwithbasictypearguments( 1,
2::numeric, '3' );
LOG: statement: select * from test.testwithbasictypearguments( 1,
2::numeric, '3' );
LOG: Test.TestWithArguments: i = 1, n = 2, t = 3
testwithbasictypearguments
----------------------------
0
(1 row)
testdb=#
Ian
-----Original Message-----
From: Adrian Klaver [mailto:adrian.klaver@xxxxxxxxxxx]
Sent: 31 May, 2018 15:07
To: ib@xxxxxxxxxxxxxxxxxxx; pgsql-general@xxxxxxxxxxxxxxxxxxxx
Subject: Re: unable to write 'raise' messages to log file?
On 05/31/2018 11:20 AM, Ian Bell wrote:
I am having considerable difficulty logging information in PL-pgSQL
functions by using the ‘RAISE’ statement. I am asking for
comments/suggestions on what I am doing wrong.
I’ve tried flushing/rotating the log files by executing *‘select
pg_rotate_logfile()’* in PSQL but my messages never appear in the log
files. I’ve tried calling my PL-pgSQL functions in PSQL, PgAdmin4,
OmniDB and ADO.NET but again my messages never appear in the log file.
On very rare occasions, I see my messages the log file if I restart
the PostgreSql server however restarting the server generally does not
flush my messages to the log files.
Do they show up in a client? For example psql:
test_(aklaver)> create or replace function TestWithBasicTypeArguments( i
int, n numeric, t text) returns integer as $$
begin
raise log 'Test.TestWithArguments: i = %, n = %, t = %', i, n, t;
return 0;
end;
CREATE FUNCTION
test_(aklaver)> set client_min_messages = 'debug1';
test_(aklaver)> select testwithbasictypearguments(1, 2.5, 'test');
LOG: Test.TestWithArguments: i = 1, n = 2.5, t = test
testwithbasictypearguments
----------------------------
0
(1 row)
Hmm.
Some suggestions:/questions:
1) Enable log_connections, log_disconnections in postgresql.conf at
least temporarily. This will help you see the sessions you are working in
2) Then in the session that you do:
select * from test.testwithbasictypearguments( 1, 2::numeric, '3' );
also do:
select 1/0;
This will help also prove the logging is tracking your session or not.
3) Are you sure you do not have another postgresql.conf in the mix that
is overriding your settings?
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx