NAME¶
FBB::LogBuffer -
std::streambuf handling log messages
SYNOPSIS¶
#include <bobcat/logbuffer>
Linking option:
-lbobcat
DESCRIPTION¶
FBB::LogBuffer is a class derived from
std::streambuf handling log
messages. The stream to log to, timestamps and log-levels can be configured
both at construction time and beyond. The
FBB::LogBuffer may be used to
initialize a
std::ostream.
NAMESPACE¶
FBB
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace
FBB.
INHERITS FROM¶
std::streambuf
ENUMERATION¶
The enumeration
TimeStamps is defined in the namespace
FBB to be
used when initializing
FBB::LogBuffer objects. It has the following
values:
- o
- NOTIMESTAMPS:
Log-messages will not have timestamps prepended to them.
- o
- TIMESTAMPS:
Log-messages will have timestamps prepended to them.
CONSTRUCTORS¶
- o
- LogBuffer(TimeStamps timestamps = TIMESTAMPS,
bool active = true, char const *delim = " "):
This constructor constructs an FBB::LogBuffer object writing its
log-messages to std::cerr. If the active parameter is
initialized to false no messages will be logged until the
buffer’s activity is switched on (see setActive() below). The
parameter delim is inserted immediately beyond the time stamp. If a
delimiter is inappropriate, an empty string or a 0-pointer may be
specified. When stamps == FBB::NOTIMESTAMPS delim is
ignored. A time stamp consists of the month, the day number of the month
and the (local) time of the current message, as usually appearing in
messages in /var/log files. E.g., Aug 5 13:52:23.
- o
- LogBuffer(std::ostream &stream, TimeStamps
timestamps = TIMESTAMPS, bool active = true, char const
*delim = " "):
This constructor constructs an FBB::LogBuffer object writing its
log-messages to the stream used to initialize its stream parameter.
If the active parameter is initialized to false no messages
will be logged until the buffer’s activity is switched on (see
setActive() below). The parameter delim is inserted
immediately beyond the time stamp. If a delimiter is inappropriate, an
empty string or a 0-pointer may be specified. When stamps ==
FBB::NOTIMESTAMPS delim is ignored. A time stamp consists of the
month, the day number of the month and the (local) time of the current
message, as usually appearing in messages in /var/log files. E.g.,
Aug 5 13:52:23. The copy constructor is not available.
MEMBER FUNCTIONS¶
All members of
std::streambuf are available, as
FBB::LogBuffer
inherits from this class.
- o
- void setStream(std::ostream &stream):
This member may be used to switch the stream to log to. It is the
responsibility of the programmer to ensure that the external stream
remains available for as long as log-messages are inserted into it.
- o
- int overflow(int c):
This member overrides the std::streambuf member. It is called
by std::ostream objects using OFdStreambuf. It calls
sync(), an then it puts the next available character into the
buffer. It returns the inserted character.
- o
- int sync():
This member overrides the std::streambuf member. It writes the
buffer to the device associated with the file descriptor, and returns
0.
- o
- void setStream(bool active):
The member function (de)activates logging. The argument true
activates logging, the argument false deactivates it.
- o
- void settimestamp(FBB::TimeStamps timestamps,
char const *delim = " "):
The member function (de)activates time stamp prepending. Use the value
FBB::TIMESTAMPS to prepend time stamps, FBB::NOTIMESTAMPS
suppresses time stamps. A time stamp consists of the month, the day number
of the month and the (local) time of the current message, as usually
appearing in messages in /var/log files. E.g., Aug 5
13:52:23. The parameter delim is inserted immediately beyond
the time stamp. If a delimiter is inappropriate, an empty string or a
0-pointer may be specified. When stamps == FBB::NOTIMESTAMPS
delim is ignored.
- o
- void setEmpty(bool empty):
This member may be called to ensure that a timestamp is inserted before the
next insertion. It is called as setEmpty(true) when a newline
character ( \n) is inserted, ensuring that another timestamp is
prepended before the next insertion.
PROTECTED MEMBER FUNCTION¶
The member listed in this section implements the tasks of the comparably named
virtual function in the class’s private interface. This separates the
redefinable interface from the user-interface. The class
LogBuffer can,
in accordance with Liskov’s Substitution Principle, be used as a
std:streambuf; but it also offers a facility for classes deriving from
LogBuffer. This facility is listed here.
- o
- int pSync():
The contents of the LogBuffer’s internal buffer is flushed.
EXAMPLE¶
#include <iostream>
#include <iomanip>
#include <bobcat/log>
using namespace std;
using namespace FBB;
int main()
{
LogBuffer buffer(cout);
ostream log(&buffer);
log << "This message is written to cout" << nl <<
setw(16) << ’ ’ << "occupying multiple lines\n";
return 0;
}
FILES¶
bobcat/logbuffer - defines the class interface
SEE ALSO¶
bobcat(7),
log(3bobcat)
BUGS¶
None Reported.
DISTRIBUTION FILES¶
- o
- bobcat_3.01.00-x.dsc: detached signature;
- o
- bobcat_3.01.00-x.tar.gz: source archive;
- o
- bobcat_3.01.00-x_i386.changes: change log;
- o
- libbobcat1_3.01.00-x_*.deb: debian package holding
the libraries;
- o
- libbobcat1-dev_3.01.00-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).