Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
YAZ-LOG(7)		  Conventions and miscellaneous 	      YAZ-LOG(7)

NAME
     yaz-log - Log handling in all yaz-based programs

SYNOPSIS
     yaz-XXXX [-v loglevel,...] [-l logfile]

DESCRIPTION
     All  YAZ-based programs use a common log subsystem, and should support com-
     mon command line options for controlling it. This man page documents those.

OPTIONS
     -l logfile
	 Specify the file where the log is to be written. If none is  specified,
	 stderr  is  used.  The  log is appended to this file. If the file grows
	 overly large, it is silently rotated: It is renamed to logfile.1,  log-
	 file.2, .., 9 (old such file is deleted), and a new file is opened. The
	 limit	defaults  to  1GB,  but  can be set by the program. The rotating
	 limit can be specified with option  -r  for  the  YAZ	frontend  server
	 (yaz-ztest).

	 Rotation  can also be implicitly enabled by using a filename which gets
	 changed for a given date, due to substitutions as given  by  the  strf-
	 time(3) function.

     -v loglevel
	 Specify  the  logging	level. The argument is a set of log level names,
	 separated by commas (no whitespace!), optionally preceded by a  '-'  to
	 negate that level. Most programs have their own default, often contain-
	 ing  fatal,warn,log,  and some application-specific values. The default
	 list can be cleared with the word none, or individual bits can  be  re-
	 moved by prefixing them with a dash '-'.

LOG LEVELS TO CONTROL LOGGING
     Some of the log levels control the way the log is written.

     flush causes the log to be flushed after every write. This can have serious
     implications  to  performance, and should not be used in production. On the
     other hand, when debugging a program crash, this can be  extremely  useful.
     The option debug implies flush as well.

     notime  prevents the writing of time stamps. This is intended for automatic
     test scripts, which should produce predictable log files that are	easy  to
     compare.

GENERAL LOG LEVELS IN YAZ ITSELF
     YAZ itself uses the following log levels:

     fatal for fatal errors, that prevent further execution of the program.

     warn for warnings about things that should be corrected.

     debug  for  debugging. This flag may be used temporarily when developing or
     debugging yaz, or a program that uses yaz. It  is	practically  deprecated,
     you should be defining and using your own log levels (see below).

     all turns on almost all hard-coded log levels.

     loglevel  logs  information about the log levels used by the program. Every
     time the log level is changed, lists all bits that are  on.  Every  time  a
     module  asks for its log bits, this is logged. This can be used for getting
     an idea of what log levels are available in any program that uses	yaz-log.
     Start the program with -v none,loglevel, and do some common operations with
     it.  Another way is to grep for yaz_log_module_level in the source code, as
     in

	       find . -name '*.[ch]' -print |
		  xargs grep yaz_log_module_level |
		  grep '"' |
		  cut -d'"' -f2 |
		  sort -u

     eventl, malloc, nmem, odr are used internally for debugging yaz.

LOG LEVELS FOR CLIENTS
     zoom logs the calls to the zoom API,  which  may  be  useful  in  debugging
     client applications.

LOG LEVELS FOR SERVERS
     server logs the server functions on a high level, starting up, listening on
     a port, etc.

     session logs individual sessions (connections).

     request logs a one-liner for each request (init, search, etc.).

     requestdetail logs the details of every request, before it is passed to the
     back-end, and the results received from it.

     Each  server program (zebra, etc.) is supposed to define its own log levels
     in addition to these. As they depend on the server in  question,  they  can
     not be described here. See above how to find out about them.

LOGGING EXAMPLES
     See what log levels yaz-ztest is using:

	     yaz-ztest -1 -v none,loglevel
	     14:43:29-23/11 [loglevel] Setting log level to 4096 = 0x00001000
	     14:43:29-23/11 [loglevel] Static  log bit 00000001 'fatal' is off
	     14:43:29-23/11 [loglevel] Static  log bit 00000002 'debug' is off
	     14:43:29-23/11 [loglevel] Static  log bit 00000004 'warn' is off
	     14:43:29-23/11 [loglevel] Static  log bit 00000008 'log' is off
	     14:43:29-23/11 [loglevel] Static  log bit 00000080 'malloc' is off
	     14:43:29-23/11 [loglevel] Static  log bit 00000800 'flush' is off
	     14:43:29-23/11 [loglevel] Static  log bit 00001000 'loglevel' is ON
	     14:43:29-23/11 [loglevel] Static  log bit 00002000 'server' is off
	     14:43:29-23/11 [loglevel] Dynamic log bit 00004000 'session' is off
	     14:43:29-23/11 [loglevel] Dynamic log bit 00008000 'request' is off
	     14:44:13-23/11 yaz-ztest [loglevel] returning log bit 0x4000 for 'session'
	     14:44:13-23/11 yaz-ztest [loglevel] returning log bit 0x2000 for 'server'
	     14:44:13-23/11 yaz-ztest [loglevel] returning NO log bit for 'eventl'
	     14:44:20-23/11 yaz-ztest [loglevel] returning log bit 0x4000 for 'session'
	     14:44:20-23/11 yaz-ztest [loglevel] returning log bit 0x8000 for 'request'
	     14:44:20-23/11 yaz-ztest [loglevel] returning NO log bit for 'requestdetail'
	     14:44:20-23/11 yaz-ztest [loglevel] returning NO log bit for 'odr'
	     14:44:20-23/11 yaz-ztest [loglevel] returning NO log bit for 'ztest'

     See the details of the requests for yaz-ztest

	    ./yaz-ztest -1 -v requestdetail
	    14:45:35-23/11 yaz-ztest [server] Adding static Z3950 listener on tcp:@:9999
	    14:45:35-23/11 yaz-ztest [server] Starting server ./yaz-ztest pid=32200
	    14:45:38-23/11 yaz-ztest [session] Starting session from tcp:127.0.0.1 (pid=32200)
	    14:45:38-23/11 yaz-ztest [requestdetail] Got initRequest
	    14:45:38-23/11 yaz-ztest [requestdetail] Id:	81
	    14:45:38-23/11 yaz-ztest [requestdetail] Name:	YAZ
	    14:45:38-23/11 yaz-ztest [requestdetail] Version:	2.0.28
	    14:45:38-23/11 yaz-ztest [requestdetail] Negotiated to v3: srch prst del extendedServices namedresults scan sort
	    14:45:38-23/11 yaz-ztest [request] Init from 'YAZ' (81) (ver 2.0.28) OK
	    14:45:39-23/11 yaz-ztest [requestdetail] Got SearchRequest.
	    14:45:39-23/11 yaz-ztest [requestdetail] ResultSet '1'
	    14:45:39-23/11 yaz-ztest [requestdetail] Database 'Default'
	    14:45:39-23/11 yaz-ztest [requestdetail] RPN query. Type: Bib-1
	    14:45:39-23/11 yaz-ztest [requestdetail]  term 'foo' (general)
	    14:45:39-23/11 yaz-ztest [requestdetail] resultCount: 7
	    14:45:39-23/11 yaz-ztest [request] Search Z: @attrset Bib-1 foo  OK:7 hits
	    14:45:41-23/11 yaz-ztest [requestdetail] Got PresentRequest.
	    14:45:41-23/11 yaz-ztest [requestdetail] Request to pack 1+1 1
	    14:45:41-23/11 yaz-ztest [requestdetail] pms=1048576, mrs=1048576
	    14:45:41-23/11 yaz-ztest [request] Present: [1] 1+1  OK 1 records returned

LOG FILENAME EXAMPLES
     A	file  with format my_YYYYMMDD.log (where Y, M, D is year, month, and day
     digits) is given as follows: -l my_%Y%m%d.log . And since the  filename  is
     depending on day, rotation will occur on midnight.

     A weekly log could be specified as -l my_%Y%U.log.

FILES
     prefix/include/yaz/log.h prefix/src/log.c

SEE ALSO
     yaz(7) yaz-ztest(8) yaz-client(1) strftime(3)

AUTHORS
     Index Data

YAZ 5.35.0			   04/10/2025			      YAZ-LOG(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=yaz-log&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help