pglogger

functions/EXCEPTION.pg_sql

Functions

EXCEPTION
Write log message if logging is set to EXCEPTION or more severe. Beware: When using EXCEPTION this means that the error is being re-raised. It really is meant only for fatal occurrences.
Syntax:
EXCEPTION (I_MESSAGE)
Parameters:
ParameterIn/OutData TypeDescription
I_MESSAGEINTEXTValue for LOG.MESSAGE.
Return values:
  • VOID
Copyright:
Thiemo Kellner, 2018 -
Webpage:
https://www.sourceforge.net/projects/pglogger
Version Info:
$Id: EXCEPTION.pg_sql 7 2018-06-12 04:15:42Z thiemo $
Additional Info:
License LGPLv3
TODO:
  • Once PostgreSQL supports packages, integrate this function into one. For the time being, it should get installed within a schema on its own and no execution grants should be given on it.
  • Once HyperSQL supports a license tag, convert the corresponding info tag into one.

Source

001: \echo Start functions/EXCEPTION.pg_sql
002: 
003: /** Write log message if logging is set to EXCEPTION or more severe.
004:  * Beware: When using EXCEPTION this means that the error is being
005:  * re-raised. It really is meant only for fatal occurrences.
006:  *
007:  *  @function EXCEPTION
008:  *  @return void
009:  *  @param in text I_MESSAGE Value for LOG.MESSAGE.
010:  *  @version $Id: EXCEPTION.pg_sql 7 2018-06-12 04:15:42Z thiemo $
011:  *  @todo Once PostgreSQL supports packages, integrate this function into one.
012:  *        For the time being, it should get installed within a schema on its
013:  *        own and no execution grants should be given on it.
014:  *  @todo Once HyperSQL supports a license tag, convert the corresponding
015:  *        info tag into one.
016:  *  @copyright Thiemo Kellner, 2018 -
017:  *  @info License LGPLv3
018:  *  @webpage https://www.sourceforge.net/projects/pglogger
019:  */
020: create or replace function EXCEPTION(
021:     I_MESSAGE text
022: )
023:   returns void
024:   language plpgsql
025:   security definer
026:   stable
027:   -- Include the hosting schema into search_path so that dblink
028:   -- can find the pglogger objects. There is no need to access
029:   -- objects in other schematas not covered with public.
030:   set search_path = :SCHEMA_NAME, public
031:   as
032: $body$
033:     begin
034:         if
035:             GET_LOGGING_LEVEL() in (
036:                 'EXCEPTION',
037:                 'WARNING',
038:                 'NOTICE',
039:                 'INFO',
040:                 'LOG',
041:                 'DEBUG'
042:             )
043:         then
044:             perform WRITE_MESSAGE(
045:                         I_MESSAGE => I_MESSAGE,
046:                         I_LEVEL => 'EXCEPTION'
047:                     );
048:         end if;
049:     end;
050: $body$;
051: 
052: comment on function EXCEPTION(I_MESSAGE text) is 'Write log message if logging is set to EXCEPTION.
053: Beware: When using EXCEPTION this means that the error is being re-raised. It really is meant only for fatal occurrences.
054: $Header: svn+ssh://thiemo@svn.code.sf.net/p/pglogger/code/functions/EXCEPTION.pg_sql 7 2018-06-12 04:15:42Z thiemo $';
055: 
056: commit; -- unlike Oracle not all ddl commit implicitly
057: 
058: \echo End functions/EXCEPTION.pg_sql


pglogger
Generated by HyperSQL v3.9.8 at Wed Jul 4 07:48:47 2018