A customised textstream for fast, multithreaded logging to file. More...
#include <log_stream.hpp>
Public Member Functions | |
void | disableHeader () |
Disables header information. More... | |
void | disableMode (int mode) |
Disable the given log mode. More... | |
void | disableTimeStamp () |
Disable time stamps. More... | |
void | enableHeader () |
Enable header information. More... | |
void | enableMode (int mode, const std::string header="") |
Enable the given mode and associate the specified header. More... | |
void | enableTimeStamp () |
Enable time stamps. More... | |
bool | isEnabled () |
Check to see if any modes are enabled. More... | |
bool | isModeEnabled (int mode) |
Check to see if a particular mode is enabled. More... | |
LogStream & | log (int mode) |
Log streaming function. More... | |
LogStream () | |
Default constructor, underlying device must be manually opened. More... | |
LogStream (const std::string &file_name, const WriteMode &mode=New) ecl_throw_decl(StandardException) | |
Convenience constructor for logstreams. More... | |
virtual | ~LogStream () |
Public Member Functions inherited from ecl::TextStream< SharedFile > | |
virtual | ~TextStream () |
Private Attributes | |
std::map< int, std::string > | modes |
TimeStamp | timestamp |
bool | write_header |
bool | write_stamp |
A customised textstream for fast, multithreaded logging to file.
Together with the LOG and FLUSH macros, this class enables fast, multithreaded logging with multiple modes, customisable headers and timestamps.
Usage:
Multiple modes are most conveniently utilsed via customised enums. For example:
Note that this is an advantage over alot of other loggers in that it gives you the freedom to define your own error logging levels. Each mode can then be associated inside the log stream with its own customised header.
This process can be repeated from multiple threads each with its own instance of the log stream attached to the single file. Using the log stream is then done via the macros LOG and FLUSH
By default this will automatically add header and timestamp information. You can manually disable these if you prefer.
Definition at line 110 of file log_stream.hpp.
|
inline |
Default constructor, underlying device must be manually opened.
This must open the underlying shared file device manually via device().open() as you would do if using a TextStream.
Definition at line 118 of file log_stream.hpp.
Convenience constructor for logstreams.
This constructor enables RAII style construction of the underlying shared file device.
file_name | : output file name. |
mode | : mode for writing (New, Append). |
StandardException | : throws if the connection failed to open. |
Definition at line 130 of file log_stream.hpp.
|
inlinevirtual |
Definition at line 143 of file log_stream.hpp.
void ecl::LogStream::disableHeader | ( | ) |
Disables header information.
This turns off printing of the header at the beginning of any logging message.
void ecl::LogStream::disableMode | ( | int | mode | ) |
Disable the given log mode.
Disable the given log mode.
mode | : the log mode. |
void ecl::LogStream::disableTimeStamp | ( | ) |
Disable time stamps.
This disables timestamps at the beginning of any logging message. The timestamp is in the format seconds.nanoseconds (think unix time).
void ecl::LogStream::enableHeader | ( | ) |
Enable header information.
This prints the header at the beginning of any logging message. The header is a string that is specified when calling the enableMode() function.
void ecl::LogStream::enableMode | ( | int | mode, |
const std::string | header = "" |
||
) |
Enable the given mode and associate the specified header.
Enable the given log mode and associate it with the specified header string.
mode | : the log mode. |
header | : the string to precede the log message if required. |
void ecl::LogStream::enableTimeStamp | ( | ) |
Enable time stamps.
This prints a timestamp at the beginning of any logging message. The timestamp is in the format seconds.nanoseconds (think unix time).
bool ecl::LogStream::isEnabled | ( | ) |
Check to see if any modes are enabled.
Check to see if any modes are enabled.
bool ecl::LogStream::isModeEnabled | ( | int | mode | ) |
Check to see if a particular mode is enabled.
Check to see if the specified mode is enabled.
LogStream& ecl::LogStream::log | ( | int | mode | ) |
Log streaming function.
Do not use this directly, rather it is indirectly utilised by the LOG macro, which should only reach here once isModeEnabled() is checked. It adds a header and timestamp if it is configured to do so and then passes the stream to the program for further additions.
mode | : log mode that is being logged. |
|
private |
Definition at line 221 of file log_stream.hpp.
|
private |
Definition at line 222 of file log_stream.hpp.
|
private |
Definition at line 219 of file log_stream.hpp.
|
private |
Definition at line 220 of file log_stream.hpp.