File: log_open.3debug

package info (click to toggle)
libdebug 0.5.3-8
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 272 kB
  • sloc: ansic: 1,194; makefile: 128
file content (181 lines) | stat: -rw-r--r-- 6,968 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
.\"
.\" -*- nroff -*-
.\"
.\"  Copyright (c) 2002-2004  Abraham vd Merwe <abz@blio.com>
.\"  All rights reserved.
.\"
.\"  Redistribution and use in source and binary forms, with or without
.\"  modification, are permitted provided that the following conditions
.\"  are met:
.\"  1. Redistributions of source code must retain the above copyright
.\"     notice, this list of conditions and the following disclaimer.
.\"
.\"  2. Redistributions in binary form must reproduce the above copyright
.\"     notice, this list of conditions and the following disclaimer in the
.\"     documentation and/or other materials provided with the distribution.
.\"  3. Neither the name of the author nor the names of other contributors
.\"     may be used to endorse or promote products derived from this software
.\"     without specific prior written permission.
.\"
.\"  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
.\"  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
.\"  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\"  ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\"  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\"  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
.\"  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
.\"  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
.\"  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
.\"  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.TH LOG_OPEN 3debug  "August 2004" Unix "Library calls"
.SH NAME
log_open, log_close, log_reset, log_flush, log_printf, log_vprintf, log_putc, log_puts - log routines for debugging
.SH LIBRARIES
Debug Library (\-ldebug)
.SH SYNOPSIS
.nf
.B #include <debug/log.h>
.sp
.BI "int log_open(const char *" logfile ", int " level ", int " flags ");
.br
.BI "void log_close(void);
.br
.BI "int log_reset(void);
.br
.BI "int log_flush(void);
.br
.BI "int log_printf(int " level ", const char *" fmt ", ...);
.br
.BI "int log_vprintf(int " level ", const char *" fmt ", va_list " ap ");
.br
.BI "int log_putc(int " level ", int " c ");
.br
.BI "int log_puts(int " level ", const char *" str ");
.fi
.SH DESCRIPTION
\fBlog_open()\fP initializes the logging system. The filename of the file to
which messages are logged should be specified by \fIlogfile\fP, or
\fBNULL\fP if messages should be printed to the console. The values for
\fIlevel\fP and \fIflags\fP are given in the next section.
.PP
From version 0.4.1 onwards the debug library also supports logging to syslog
instead of a file. Instead of specifying a file, just specify a string in
the form \fIident.facility\fP, where \fIident\fP is a string which will be
prepended to each syslog message and is usually the program name. The
\fIfacility\fP should be the facility to which messages should be logged.
.PP
\fBlog_close()\fP flushes all pending messages, and closes the file descriptor
of the log file (if any).
.PP
\fBlog_reset()\fP reinitializes the logging system. If any files are
currently opened for writing, it will be closed and reopened. This is useful
if you need to rotate log files.
.PP
\fBlog_flush()\fP flushes all pending messages (if any).
.PP
\fBlog_printf()\fP and \fBlog_vprintf()\fP are replacements for
\fBprintf\fP(3) and \fBvprintf\fP(3) respectively.
.PP
\fBlog_putc()\fP will log a single character. This is the equivalent of
\fBputchar\fP(3).
.PP
\fBlog_puts()\fP will log a string. It is the equivalent of \fBputs\fP(3),
except that is does not append a trailing newline.
.SH PARAMETERS
This section lists the parameters used to set the values of \fIlevel\fP and
\fIflags\fP.
.SS level
This determines the importance of the message. The levels are, in order of
decreasing verbosity:
.TP
.B LOG_NOISY
verbose debug messages
.TP
.B LOG_DEBUG
debug messages
.TP
.B LOG_VERBOSE
informational messages
.TP
.B LOG_NORMAL
normal, but significant, conditions
.TP
.B LOG_WARNING
warning conditions
.TP
.B LOG_ERROR
error conditions
.TP
.B LOG_QUIET
no messages are printed
.PP
The \fIlevel\fP argument to \fBlog_printf()\fP, \fBlog_vprintf()\fP,
\fBlog_putc()\fP, and \fBlog_puts()\fP specify the level at which the
message should be printed. It does not make sense to specify \fBLOG_QUIET\fP
to these functions.
.PP
The \fIlevel\fP argument to \fBlog_open()\fP sets the verbosity of the
program. Any messages printed with a \fIlevel\fP higher (more verbose) than
that specified to the \fBlog_open()\fP function, will be discarded.
.SS flags
The \fIflags\fP argument to \fBlog_open()\fP is an OR of any of these:
.TP
.B LOG_HAVE_COLORS
If this flag is specified and messages are printed to the console (i.e. no
log file is specified), messages will be printed in different colors,
depending on their log level.
.TP
.B LOG_PRINT_FUNCTION
If this flag is specified, the function in which the print function was
called would be printed in addition to the filename and line number.
.TP
.B LOG_DEBUG_PREFIX_ONLY
If this flag is specified, only messages with a level higher or equal to
(i.e. more or as verbose) \fBLOG_DEBUG\fP will be printed in color and with
file, line number, and (if necessary), the function.
.TP
.B LOG_DETECT_DUPLICATES
If this flag is specified, messages would be buffered and duplicate lines
would not be printed. Instead, the first message would be printed, followed
by a line describing the number of times the message repeated. This is a
great way to prevent flooding, but unfortunately it has the side effect of
always being one statement behind.
.TP
.B LOG_DETECT_FLOODING
If specified, the rate at which messages are printed would be limited in
order to avoid flooding. This feature have not been implemented yet, and is
currently ignored.
.SH RETURN VALUE
All functions except \fBlog_close()\fP return 0 if successful, \-1 if some
error occurred. Check errno to see which error occurred.
.PP
If \fBlog_reset()\fP or \fBlog_open()\fP fails, behaviour is undefined and
it should be assumed that no logging is possible.
.PP
The \fBlog_close()\fP function returns no value.
.SH "NOTES"
If this routines are combined with the memory routines, care should be taken
to call open and close functions in the right order. The correct order is as
follows:

.RS
.nf
.ta 4n 11n 17n
mem_open (NULL);
log_open (NULL,LOG_NORMAL,LOG_HAVE_COLORS | LOG_PRINT_FUNCTION);
atexit (mem_close);
atexit (log_close);
.fi
.RE

Of course, \fBatexit\fP(3) should only be used if the program will not
forked.
.PP
None of the libdebug routines are thread-safe. I'm not planning to change this
either! For more information, please see http://threading.2038bug.com/
.SH "SEE ALSO"
mem_open(3), errno(3), atexit(3), printf(3), vprintf(3), putchar(3), puts(3)
.br
logrotate(8), syslog(3), logger(1)
.SH "AUTHOR"
Written by Abraham vd Merwe <abz@blio.com>