Each time a user sends a job to the printer, the print service creates two files that describe the job request and places one each in the /usr/spool/lp/temp and /usr/spool/lp/requests directories. The information about the job is split into two files so that the system can keep sensitive information secure in the /usr/spool/lp/requests directory. The user who submitted the job has access to the request file in /usr/spool/lp/temp; only the lp administrator (or root) has access to the file in /usr/spool/lp/requests.
The request files remain in these directories only while the job is in the queue. When the job finishes printing, the information in the two files is combined and appended to the ``request log'', /usr/spool/lp/logs/requests.
The structure of the request log is simple, which makes it easy to extract data using common UNIX shell commands. The requests are listed in the order in which they were printed, separated by lines that begin with the request ID. Each line below the separator line is marked with a single letter, the ``request log code'', that identifies the kind of information contained in the line. Each letter is separated from the data by a single space. ``Request log entries'', describes these codes. Here is a sample entry from the print request log:
= ps-717, uid 1532, gid 18, size 7872, Tue May 10 14:43:10 1994 z ps C 1 D ps F /usr/spool/lp/temp/717-1 P 20 t simple U hanna s 0x0010
Request log entries
|Content of line
|The separator line lists the (comma-separated) request ID, user ID (uid) and group ID (gid) of the user who submitted the request, total number of bytes in the original (unfiltered) file (size), and the date and time the request was queued.
|Number of copies printed.
|Printer or class destination or the word ``any''.
|Name of the file in the /usr/spool/lp/temp directory. This line is repeated for each file printed, and files are printed in the order given.
|Form name used (if applicable).
|Type of special handling used: resume, hold, or immediate.
How the print service notified the user after printing the file
M by an electronic mail message
W by a message written to the user's terminal
|Any -o options given to lp(1).
|Priority of the print request, if applicable.
|List of pages printed.
|Any -r options given to lp(1) indicating that the user requested raw processing of the file.
|Character set used.
Outcome of the job, expressed as a combination
of individual bits in hexadecimal form:
0x0001 Printing held pending resumption.
0x0002 Slow filter is running.
0x0004 Slow filtering finished successfully.
0x0008 Printing in progress.
0x0010 Printing finished successfully.
0x0020 Request held pending user change.
0x0040 Request was canceled.
0x0080 Request is next to print.
0x0100 Request failed filtering or printing.
0x0200 Request in transit to remote printer.
0x0400 User will be notified by alert.
0x0800 Alert notification is running.
0x1000 Remote system accepted request.
0x2000 Administrator placed hold on request.
0x4000 Filters were changed.
0x8000 Request temporarily stopped.
|Title on the banner page.
|Content type of the file.
|Name of the user who submitted the print request.
|List of special modes to give to the filters used to print the request.
|Printer used for the request. This differs from the destination (the D line) if the request was queued for ``any'' printer or a class of printers, or if the lp administrator transferred the request to another printer.