Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.atnf.csiro.au/computing/software/casacore/casacore-1.2.0/doc/html/classcasa_1_1LogIO.html
Дата изменения: Unknown Дата индексирования: Mon Feb 14 20:09:45 2011 Кодировка: |
ostream-like interface to creating log messages. More...
#include <LogIO.h>
Public Types | |
enum | Command { POST, EXCEPTION, SEVERE, WARN, NORMAL, NORMAL1, NORMAL2, NORMAL3, NORMAL4, NORMAL5, DEBUG1, DEBUG2, DEBUGGING } |
Special commands to the LogIO object. More... | |
Public Member Functions | |
LogIO () | |
Attach this LogIO object to the global sink with no origin information. | |
LogIO (LogSink &sink) | |
Attach this LogIO object to the supplied sink. | |
LogIO (const LogOrigin &OR) | |
Attach this LogIO object to the supplied origin and global sink. | |
LogIO (const LogOrigin &OR, LogSink &sink) | |
Attach this LogIO object to the supplied origin and sink. | |
LogIO (const LogIO &other) | |
Copying uses reference semantics, i.e. | |
LogIO & | operator= (const LogIO &other) |
~LogIO () | |
The destructor will post any accumulated message that has not already been posted. | |
void | post () |
Post the accumulated message. | |
void | post (LogMessage &amess) |
void | postLocally () |
Post the accumulated message locally. | |
void | postThenThrow () |
Post the accumulated message at SEVERE priority and then throw an exception. | |
void | priority (LogMessage::Priority which) |
Change the priority of the message. | |
LogMessage::Priority | priority () |
void | sourceLocation (const SourceLocation *where) |
Change the location in the origin. | |
void | origin (const LogOrigin &origin) |
Change the origin of the accumulated message. | |
ostream & | output () |
Acumulate output in this ostream. | |
LogSinkInterface & | localSink () |
Occasionally it is useful to interrogate the local log sink. | |
const LogSinkInterface & | localSink () const |
Private Attributes | |
LogSink | sink_p |
LogMessage | msg_p |
ostringstream * | text_p |
ostream-like interface to creating log messages.
Public interface
Log
message, I
nput/O
utput.
LogIO is intended to be used in a way similar to the ostream class. However, rather than sending it's output to a file or stdout, it bundles its output up into LogMessage objects and posts them to a LogSink .
When you use the "<<" operator on a LogIO, you are building up a log message inside the LogIO object. The message is posted when:
LogIO::post()
is called LogIO::POST
or LogIO::EXCEPTION
commands to the LogIO with the shift ( <<
) command. Note that log messages may span multiple lines, so sending the LogIO a newline (via "\n" or endl) does not force the message to be emitted.
A LogIO may be created in the following ways:
LogIO os;
Here, os
is attached to the global log sink, and no origin information is set.
TableLogSink tab(...); LogIO os(tab);
Here, os
is attached to tab
(and also to the global log sink since every sink's post
also calls the global sink's post
).
Here, os
is attached to the global sink and the origin information is set to class::func(args)
and the line number and source file information is set (with WHERE
).
Here all the above information is set.
Once you have a LogIO
, using it is pretty simple:
os << "Every good boy deserves" << 5 << " pieces of fudge!";
This accumulates the message but does not send it. If you want to force it to be sent you can do so with either of the following methods:
os << LogIO::POST; // From the Commands enum os.post(); // Member function
Note that after a post the priority is reset to NORMAL.
If you want to change the level of the message you can also do so with the shift operator:
os << LogIO::DEBUGGING << "Boring message" << LogIO::SEVERE << "Error!" << LogIO::POST;
Note that changing the priority changes the priority of the entire message. The message does not get posted until the POST is done. So in the above example the DEBUGGING priority does not do anything because the priority is overwritten by the SEVERE one.
You can also change the origin information with the << operator:
os << LogOrigin("class", "func(args)"); os << WHERE;
The earlier method of creating log messages solely through LogSink and LogMessage required the programmer to type in more lines of code than this solution. Also, this interface makes it easy to drop log messages into existing code that uses ostreams.
Definition at line 158 of file LogIO.h.
enum casa::LogIO::Command |
Special commands to the LogIO object.
POST |
Post the accumulated message. Equivalent to calling LogIO::post(). |
EXCEPTION |
Post the accumulated message then throw an exception. Always posts the message at SEVERE priority. Equivalent to calling LogIO::postThenThrow(). |
SEVERE |
Change the message priority to SEVERE. |
WARN |
Change the message priority to WARN. |
NORMAL |
Change the message priority to NORMAL. |
NORMAL1 | |
NORMAL2 | |
NORMAL3 | |
NORMAL4 | |
NORMAL5 | |
DEBUG1 |
Change the message priority to DEBUGGING. |
DEBUG2 | |
DEBUGGING |
casa::LogIO::LogIO | ( | ) |
Attach this LogIO object to the global sink with no origin information.
casa::LogIO::LogIO | ( | LogSink & | sink | ) |
casa::LogIO::LogIO | ( | const LogOrigin & | OR | ) |
Attach this LogIO object to the supplied origin and global sink.
Attach this LogIO object to the supplied origin and sink.
casa::LogIO::LogIO | ( | const LogIO & |