Guile modules are executed in a specially prepared environment.
Current error port is redirected so that everything written to it ends
up in the
smapd error stream. So, if
writing its log to syslog, everything you write to
‘(current-error-port)’ will be written to syslog as well. The
port is line-buffered. For example, the following code:
(with-output-to-port (current-error-port) (lambda () (display "The diagnostics follows:") (newline) (display "Module opened") (newline)))
will result in two lines in your syslog file, which will look like
Jun 19 12:49:05 netbox smapd: The diagnostics follows Jun 19 12:49:05 netbox smapd: Module opened
For any debugging output, use
smap-debug-port. This port is
configured so that everything written to it is explicitly marked as
being debug output. If
smapd logs to stderr, it will be
prefixed with ‘DEBUG:’, and if it logs to syslog, the output will
be logged with ‘LOG_DEBUG’ priority.
Finally, current output port is closed for any functions, excepting ‘query’ (see query-db). For ‘query’ function, it is redirected so that anything written to it is reformatted according to the socket map protocol (see Protocol) and sent back as a reply to the client.