#include "userlog.h" extern char *proc_name; int userlog (format[,arg] ...) char *format;
The central event log is an ordinary UNIX file whose pathname is composed as follows: If the shell variable ULOGPFX is set, its value is used as the prefix for the filename. If ULOGPFX is not set, ULOG is used. The prefix is determined the first time userlog() is called. Each time userlog() is called the date is determined, and the month, day, and year are concatenated to the prefix as mmddyy to set the name for the file. The first time a process writes to the userlog, it first writes an additional message indicating the associated TUXEDO version.
The message is then appended to the file. With this scheme, processes that call userlog() on successive days will write into different files.
Messages are appended to the log file with a tag made up of the time (hhmmss), system name, process name, and process-id of the calling process. The tag is terminated with a colon (:). The name of the process is taken from the pathname of the external variable proc_name. If proc_name has value NULL, the printed name is set to ?proc.
TUXEDO-generated error messages in the log file are prefixed by a unique identification string of the form: <catalog>:<number>:
This string gives the name of the internationalized catalog containing the message string, plus the message number. By convention TUXEDO-generated error messages are used only once, so the string uniquely identifies a location in the source code.
If the last character of the format specification is not a newline character, userlog() appends one.
If the first character of the shell variable ULOGDEBUG is 1 or y, the message sent to userlog() is also written to the standard error of the calling process, using the fprintf(3S) function.
userlog() is used by the TUXEDO System/T to record a variety of events.
The userlog mechanism is entirely independent of any database transaction logging mechanism.
The userlog() interface is supported on UNIX and MS-DOS operating systems. The system name produced as part of the log message is not available on MS-DOS systems; therefore, the value PC is
/application/logs/log.090790. If the call:
userlog("UNKNOWN USER '%s' (uid=%d)", usrname, uid);is made at 4:22:14pm on the UNIX System file named m1 by the sec program, whose process-id is 23431, and the variable usrname contains the string "sxx", and the variable uid contains the integer 123, the following line appears in the log file:
162214.m1!sec.23431: UNKNOWN USER 'sxx' (uid=123)If the message is sent to the central event log while the process is in transaction mode, the user log entry has additional components in the tag. These components consist of the literal gtrid followed by three long hexadecimal integers. The integers uniquely identify the global transaction and make up what is referred to as the global transaction identifier. This identifier is used mainly for administrative purposes, but it does make an appearance in the tag that prefixes the messages in the central event log. If the foregoing message is written to the central event log in transaction mode, the resulting log entry will look like this:
162214.logsys!security.23431: gtrid x2 x24e1b803 x239: UNKNOWN USER 'sxx' (uid=123)If the shell variable ULOGDEBUG has a value of y, the log message is also written to the standard error of the program named security.