[postgis-devel] Showing debug messages in a PostgreSQL C function

Jorge Arevalo jorgearevalo at gis4free.org
Tue Apr 13 07:20:04 PDT 2010


Hello,

I've sent this message to PostgreSQL general list. So, I apologize if
is considered annoying.

I'm programming a C function that returns a set (PostgreSQL 8.4). The
function crash, and I'm trying to debug it. I've read:

http://www.postgresql.org/docs/8.4/interactive/xfunc-c.html
http://www.postgresql.org/docs/8.4/interactive/error-message-reporting.html
http://www.postgresql.org/docs/current/static/runtime-config-logging.html

but I can't see any of my log messages. I'm using lines like this:

ereport(WARNING,(errcode(ERRCODE_WARNING), errmsg("This is a warning
message")));

or even simpler

elog(WARNING, "This is a warning message");

I've changed the level from WARNING to ERROR, and it doesn't work. A
log file is created, and when I start the server, stop it, run a query... I can
see the messages logged by the server, but not my own messages, raised
with ereport or elog.

What's happening? This is the log part of my postgresql.conf

#------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#------------------------------------------------------------------------------

# - Where to Log -

log_destination = 'stderr'              # Valid values are combinations of
                                       # stderr, csvlog, syslog and eventlog,
                                       # depending on platform.  csvlog
                                       # requires logging_collector to be on.

# This is used when logging to stderr:
logging_collector = on          # Enable capturing of stderr and csvlog
                                       # into log files. Required to be on for
                                       # csvlogs.
                                       # (change requires restart)

# These are only used if logging_collector is on:
log_directory = 'pg_log'                # directory where log files are written,
                                       # can be absolute or relative to PGDATA
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
                                       # can include strftime() escapes
#log_truncate_on_rotation = off         # If on, an existing log file of the
                                       # same name as the new log file will be
                                       # truncated rather than appended to.
                                       # But such truncation only occurs on
                                       # time-driven rotation, not on restarts
                                       # or size-driven rotation.  Default is
                                       # off, meaning append to existing files
                                       # in all cases.
log_rotation_age = 1d                   # Automatic rotation of logfiles will
                                       # happen after that time.  0 disables.
log_rotation_size = 10MB                # Automatic rotation of logfiles will
                                       # happen after that much log output.
                                       # 0 disables.

# These are relevant when logging to syslog:
#syslog_facility = 'LOCAL0'
#syslog_ident = 'postgres'

#silent_mode = off                      # Run server silently.
                                       # DO NOT USE without syslog or
                                       # logging_collector
                                       # (change requires restart)


# - When to Log -

#client_min_messages = notice           # values in order of decreasing detail:
                                       #   debug5
                                       #   debug4
                                       #   debug3
                                       #   debug2
                                       #   debug1
                                       #   log
                                       #   notice
                                       #   warning
                                       #   error

log_min_messages = debug5               # values in order of decreasing detail:
                                       #   debug5
                                       #   debug4
                                       #   debug3
                                       #   debug2
                                       #   debug1
                                       #   info
                                       #   notice
                                       #   warning
                                       #   error
                                       #   log
                                       #   fatal
                                       #   panic

log_error_verbosity = verbose           # terse, default, or verbose messages

log_min_error_statement = debug5        # values in order of decreasing detail:
                                       #   debug5
                                       #   debug4
                                       #   debug3
                                       #   debug2
                                       #   debug1
                                       #   info
                                       #   notice
                                       #   warning
                                       #   error
                                       #   log
                                       #   fatal
                                       #   panic (effectively off)

log_min_duration_statement = 0          # -1 is disabled, 0 logs all statements
                                       # and their durations, > 0 logs only
                                       # statements running at least this number
                                       # of milliseconds


# - What to Log -

debug_print_parse = on
debug_print_rewritten = on
debug_print_plan = on
debug_pretty_print = on
#log_checkpoints = off
#log_connections = off
#log_disconnections = off
log_duration = on
#log_hostname = off
log_line_prefix = '%t '                 # special values:
                                       #   %u = user name
                                       #   %d = database name
                                       #   %r = remote host and port
                                       #   %h = remote host
                                       #   %p = process ID
                                       #   %t = timestamp without milliseconds
                                       #   %m = timestamp with milliseconds
                                       #   %i = command tag
                                       #   %c = session ID
                                       #   %l = session line number
                                       #   %s = session start timestamp
                                       #   %v = virtual transaction ID
                                       #   %x = transaction ID (0 if none)
                                       #   %q = stop here in non-session
                                       #        processes
                                       #   %% = '%'
                                       # e.g. '<%u%%%d> '
#log_lock_waits = off                   # log lock waits >= deadlock_timeout
log_statement = 'all'                   # none, ddl, mod, all
#log_temp_files = -1                    # log temporary files equal or larger
                                       # than the specified size in kilobytes;
                                       # -1 disables, 0 logs all temp files
#log_timezone = unknown                 # actually, defaults to TZ environment
                                       # setting


Thanks in advance, and best regards
Jorge


http://www.gis4free.org/blog



More information about the postgis-devel mailing list