oracular (3) syslogstream.3bobcat.gz

Provided by: libbobcat-dev_6.06.01-1_amd64 bug

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  enumeration  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 content 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.

       Copy and move constructors (and assignment operators) 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), log(3bobcat), 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.

BOBCAT PROJECT FILES

       o      https://fbb-git.gitlab.io/bobcat/: gitlab project page;

       o      bobcat_6.06.01-x.dsc: detached signature;

       o      bobcat_6.06.01-x.tar.gz: source archive;

       o      bobcat_6.06.01-x_i386.changes: change log;

       o      libbobcat1_6.06.01-x_*.deb: debian package containing the libraries;

       o      libbobcat1-dev_6.06.01-x_*.deb: debian package containing the libraries, headers and manual pages;

BOBCAT

       Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.

       This is free software, distributed under the terms of the GNU General Public License (GPL).

AUTHOR

       Frank B. Brokken (f.b.brokken@rug.nl).