NAME¶
FBB::SyslogStream - An output stream inserting syslog messages
SYNOPSIS¶
#include <bobcat/syslogstream>
Linking option:
-lbobcat
DESCRIPTION¶
FBB::SyslogStream objects may be used as a
std::ostream to write
syslog messages using stream facilities.
Multiple separate insertions can be used to create a single syslog message: the
message is only sent to the syslog daemon after receiving a
flush
command (e.g., after inserting
std::flush or
std::endl).
Non-printable characters (like
’\n’) show up in the
syslog message as octal values, preceded by
# (e.g.,
#012 for
’\n’). The newline normally inserted by
std::endl
is ignored:
SyslogStream objects interpret
std::endl like
std::flush.
One series of insertions may contain multiple
std::endl or
std::flush manipulators. At each of these manipulators a new message is
sent to the syslog daemon, containing all info that has so far been buffered.
After sending a message to the syslog daemon, the
SyslogStream’s
internal buffer is cleared.
NAMESPACE¶
FBB
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace
FBB.
INHERITS FROM¶
std::ostream
ENUMERATIONS¶
The following enumerations are defined in the namespace
FBB:
Priority:
The values of this enumeration match the corresponding priority
LOG_xxx
values used with
syslog(3):
- o
- EMERG:
system is unusable;
- o
- ALERT:
action must be taken immediately;
- o
- CRIT:
critical conditions;
- o
- ERR:
error conditions;
- o
- WARNING:
warning conditions;
- o
- NOTICE:
normal, but significant, condition;
- o
- INFO:
informational message;
- o
- DEBUG:
debug-level message; The setMask member (see below) can be used to
select which type of messages will actually be processed by the syslog
daemon.
PriorityType:
This enumberation has two values fine-tuning the type of messages that are
actually processed by the syslog daemon:
- o
- SINGLE:
Only messages of the priority specified at the setMask call are
processed by the syslog daemon;
- o
- UPTO:
Messages of priority EMERG up to the the priority specified at the
setMask call are processed by the syslog daemon; By default, the
syslog daemon processes all messages it receives.
Facility:
The values of this enumeration match the corresponding facility
LOG_xxx
values used with
syslog(3):
- o
- AUTHPRIV:
security/authorization messages (private)
- o
- CRON:
clock daemon ( cron and at)
- o
- DAEMON:
other system daemons
- o
- KERN:
kernel messages
- o
- LOCAL0:
reserved for local use. LOCAL1 through LOCAL7 are available as
well.
- o
- LPR:
line printer subsystem
- o
- MAIL:
mail subsystem
- o
- NEWS:
USENET news subsystem
- o
- SYSLOGBUF:
messages generated internally by syslogbufd
- o
- USER:
generic user-level messages
- o
- UUCP:
UUCP subsystem
CONSTRUCTORS¶
- o
- SyslogStream(string const &ident = "",
FBB::Priority priority = FBB::NOTICE, FBB::Facility facility =
FBB::USER, int option = 0):
This constructor initializes a SyslogStream object. The ident
parameter is usually the name of the program. Its contents are prepended
to syslog messages.
- The priority parameter determines the default importance of the
message sent to the syslog daemon. By default messages are sent to the
syslog daemon with priority FBB::NOTICE. Syslog messages may be
given different priority by inserting a SyslogStream manipulator
(see below). The priority set at construction time may also be modified
using the setPriority and setDefaultPriority members.
- Which messages actually appear in log facilities is not determined by the
messages’ priorities, but by syslog’s log mask. The
log mask can be set by the static member setMask (see below).
- The facility parameter determines the type of program doing the
logging. By default FBB::USER is used.
- The option parameter may be used to specify various options (use
the binary ` bitor’ (`|’) operator to combine
options):
- LOG_CONS: write directly to system console if there is an error
while sending to system logger
LOG_NDELAY: open the connection immediately (normally, the con-
nection is opened when the first message is logged)
LOG_PERROR: print to stderr as well
LOG__PID: include PID with each message
- By default no options are used.
- o
- SyslogStream(char const *ident, FBB::Priority priority =
FBB::NOTICE, FBB::Facility facility = FBB::USER, int option
= 0):
This constructor is kept for backward compatibility. Its parameters have the
same meanings as those of the abovementioned constructor. A nullptr
indicates that no text needs to be prepended to syslog messages.
Copy and move constructors are not available.
MEMBER FUNCTIONS¶
All members of
std::ostream are available, as
FBB::SyslogStream
inherits from this class.
- o
- void close():
If the SyslogStream’s internal buffer is not empty it is
flushed to the syslog daemon. Thereafer closelog(3) is called.
- o
- Priority defaultPriority() const:
Returns the current default priority. I.e., the priority that will be used
for the messages after inserting endl or flush.
- o
- void open(string const &ident, FBB::Priority priority =
FBB::NOTICE, FBB::Facility facility = FBB::USER, int option
= 0):
Redefines the current identifier, priority, facility and options that are
used when sending messages to the syslog daemon. If the
SyslogStream’s internal buffer is not empty it is first
flushed to the syslog daemon using the identifier, priority and options
that were active just before calling open.
- o
- Priority priority() const:
Returns the next priority. I.e., the priority that will be used for the next
message that is sent to the syslog daemon.
- o
- Priority setDefaultPriority(Priority priority):
Changes the default priority of the next message that is sent to the syslog
daemon after inserting std::eoln or std::flush. The
previously active default priority is returned.
- o
- Priority setPriority(Priority priority):
Changes the priority for the next message that is sent to the syslog daemon
after inserting std::eoln or std::flush. Subsequent messages
will again use the default priority. The previously active priority
setting is returned.
STATIC MEMBER FUNCTIONS¶
- o
- Priority setMask(Priority priority, PriorityMask upTo):
Syslog messages of (if upTo equals SINGLE) or up to (if
upTo equals UPTO) the indicated priority are processed by
the syslog daemon.
- o
- Priority setMask(Priority priority, Priority ...priorities):
Syslog messages of the priorities passed to setMask are processed by
the syslog daemon. At least one priority must be specified.
- o
- Facility stoF(std::string const &name, Facility facility =
USER):
Returns the facility matching the name of the facility provided by
name. Facility matching is performed case insensitively. E.g., if
name contains daemon, facility FBB::DAEMON is
returned. If name does not match any facility name then the value
of this function’s second argument is returned. The
function’s name ( stoF) was used in analogy of the various
sto... conversion functions that were made available by the
C++11 standard.
- o
- Priority stoP(std::string const &name, Priority priority =
NOTICE):
Returns the priority matching the name of the priority provided by
name. Priority matching is performed case insensitively. E.g., if
name contains emerg, priority FBB::EMERG is returned.
If name does not match any priority name then the value of this
function’s second argument is returned. The function’s name
( stoP) was used in analogy of the various sto... conversion
functions that were made available by the C++11 standard.
MANIPULATORS¶
The following set of manipulators are all defined as (static) members. They may
be inserted into an
FBB::SyslogStream object. Except for the last
manipulator (
strerrno), they have the following characteristics in
common:
- o
- They change the priority of the messages that are subsequently inserted by
the FBB::SyslogStream object, thus acting like a separate
setPriority call.
- o
- When inserting multiple manipulators before the inserted message is
flushed (e.g., using the std::flush or the std::endl
manipulators) the last inserted FBB::SyslogStream manipulator will
be used.
- o
- If the manipulators are not inserted into an FBB::SyslogStream
object (but in another std::ostream type of object) then they
perform no action.
Here are the available manipulators:
- o
- SyslogStream::alert:
Messages are inserted with priority FBB::ALERT.
- o
- SyslogStream::crit:
Message are inserted with priority FBB::CRIT.
- o
- SyslogStream::debug:
Messages are inserted with priority FBB::DEBUG.
- o
- SyslogStream::emerg:
Messages are inserted with priority FBB::EMERG.
- o
- SyslogStream::err:
Messages are inserted with priority FBB::ERR.
- o
- SyslogStream::info:
Messages are inserted with priority FBB::INFO.
- o
- SyslogStream::notice:
Messages are inserted with priority FBB::NOTICE.
- o
- SyslogStream::strerrno:
This manipulator inserts the textual interpretation of
std::errno’s current value into a std::ostream. Note
that, different from the other manipulators, the object into which this
manipulator is inserted does not have to be a FBB::SyslogStream
object.
- o
- SyslogStream::warning:
Messages are inserted with priority FBB::WARNING.
EXAMPLE¶
#include <bobcat/syslogstream>
using namespace std;
using namespace FBB;
int main(int argc, char **argv)
{
SyslogStream sls(argv[0]);
sls << SyslogStream::debug << "Hello world" << flush <<
SyslogStream::strerrno << endl;
}
FILES¶
bobcat/syslogstream - defines the class interface
SEE ALSO¶
bobcat(7),
closelog(3),
openlog(3),
rsyslogd(8),
syslog(3),
syslogbuf(3bobcat)
BUGS¶
The constructor’s
option parameter is an
int. Because of
this,
int values rather than enumeration values are passed to the
constructor. It is the responsibility of the programmer to pass defined option
values only.
DISTRIBUTION FILES¶
- o
- bobcat_3.23.01-x.dsc: detached signature;
- o
- bobcat_3.23.01-x.tar.gz: source archive;
- o
- bobcat_3.23.01-x_i386.changes: change log;
- o
- libbobcat1_3.23.01-x_*.deb: debian package holding the
libraries;
- o
- libbobcat1-dev_3.23.01-x_*.deb: debian package holding the
libraries, headers and manual pages;
- o
- http://sourceforge.net/projects/bobcat: public archive location;
BOBCAT¶
Bobcat is an acronym of `Brokken’s Own Base Classes And
Templates’.
COPYRIGHT¶
This is free software, distributed under the terms of the GNU General Public
License (GPL).
AUTHOR¶
Frank B. Brokken (
f.b.brokken@rug.nl).