AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::slic::GenericOutputStream Class Reference

Concrete instance of LogStream, which implements functionality for logging messages to a C++ ostream object, e.g., std::cout, std::cerr, a std::ofstream, std::ostringstream, etc. More...

#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/develop/src/axom/slic/streams/GenericOutputStream.hpp>

Inheritance diagram for axom::slic::GenericOutputStream:

Public Member Functions

 GenericOutputStream (std::ostream *os)
 Constructs a GenericOutpuStream instance with the given stream. More...
 
 GenericOutputStream (const std::string &stream)
 Constructs a GenericOutputStream instance specified by the given string. The string input determines the stream as follows: More...
 
 GenericOutputStream (std::ostream *os, const std::string &format)
 Constructs a GenericOutputStream instance with the given stream and message formatting. More...
 
 GenericOutputStream (const std::string &stream, const std::string &format)
 Constructs a GenericOutputStream instance specified by the given string and message formatting. The string input determines the stream as follows: More...
 
virtual ~GenericOutputStream ()
 Destructor. More...
 
virtual void append (message::Level msgLevel, const std::string &message, const std::string &tagName, const std::string &fileName, int line, bool filter_duplicates, bool tag_stream_only) override
 
virtual void outputLocal () override
 Outputs the log stream to the console. More...
 
virtual void flush () override
 Flushes the log stream. More...
 
void setFormatString (const std::string &format)
 Sets the format string. More...
 
virtual void push ()
 Pushes messages incrementally up the log stream. NO-OP by default. More...
 
virtual bool hasPendingMessages ()
 Tests whether there are any pending messages that need to be flushed. This method should only be overriden for LogStream inherited classes that can reliably test whether pending messages exist. More...
 
virtual bool isUsingMPI ()
 Tests whether this class relies on MPI. More...
 

Protected Member Functions

std::string getFormatedMessage (const std::string &msgLevel, const std::string &message, const std::string &tagName, const std::string &rank, const std::string &rank_count, const std::string &fileName, int line)
 Get the communicator. More...
 
std::string getTimeStamp ()
 Returns a time-stamp. More...
 

Detailed Description

Concrete instance of LogStream, which implements functionality for logging messages to a C++ ostream object, e.g., std::cout, std::cerr, a std::ofstream, std::ostringstream, etc.

See also
LogStream Logger

Constructor & Destructor Documentation

◆ GenericOutputStream() [1/4]

axom::slic::GenericOutputStream::GenericOutputStream ( std::ostream *  os)

Constructs a GenericOutpuStream instance with the given stream.

Parameters
[in]ospointer to a user-supplied ostream instance.
Precondition
os != NULL

◆ GenericOutputStream() [2/4]

axom::slic::GenericOutputStream::GenericOutputStream ( const std::string &  stream)

Constructs a GenericOutputStream instance specified by the given string. The string input determines the stream as follows:

  • "cout" makes std::cout the output stream
  • "cerr" makes std::cerr the output stream
  • Any other input will construct a std::ofstream associated with input
    Parameters
    [in]streamthe string to control type of stream created
    Note
    This constructor avoids creating an empty file if this GenericOutputStream never flushes a message.

◆ GenericOutputStream() [3/4]

axom::slic::GenericOutputStream::GenericOutputStream ( std::ostream *  os,
const std::string &  format 
)

Constructs a GenericOutputStream instance with the given stream and message formatting.

Parameters
[in]ospointer to a user-supplied ostream instance.
[in]formatthe format string.
Precondition
os != NULL
See also
LogStream::setFormatString for the format string.

◆ GenericOutputStream() [4/4]

axom::slic::GenericOutputStream::GenericOutputStream ( const std::string &  stream,
const std::string &  format 
)

Constructs a GenericOutputStream instance specified by the given string and message formatting. The string input determines the stream as follows:

  • "cout" makes std::cout the output stream
  • "cerr" makes std::cerr the output stream
  • Any other input will construct a std::ofstream associated with input
    Parameters
    [in]streamthe string to control type of stream created
    [in]formatthe format string.
    See also
    LogStream::setFormatString for the format string.
    Note
    This constructor avoids creating an empty file if this GenericOutputStream never flushes a message.

◆ ~GenericOutputStream()

virtual axom::slic::GenericOutputStream::~GenericOutputStream ( )
virtual

Destructor.

Member Function Documentation

◆ append()

virtual void axom::slic::GenericOutputStream::append ( message::Level  msgLevel,
const std::string &  message,
const std::string &  tagName,
const std::string &  fileName,
int  line,
bool  filter_duplicates,
bool  tag_stream_only 
)
overridevirtual

◆ outputLocal()

virtual void axom::slic::GenericOutputStream::outputLocal ( )
overridevirtual

Outputs the log stream to the console.

Reimplemented from axom::slic::LogStream.

◆ flush()

virtual void axom::slic::GenericOutputStream::flush ( )
overridevirtual

Flushes the log stream.

Reimplemented from axom::slic::LogStream.

◆ setFormatString()

void axom::slic::LogStream::setFormatString ( const std::string &  format)
inlineinherited

Sets the format string.

Parameters
formata format string
Note
The following keywords in the format string are replaced:
  • <LEVEL> with the message type, e.g, ERROR, FATAL, etc.
  • <MESSAGE> with the user-supplied message
  • <TAG> user-supplied tag
  • <FILE> with the filename
  • <LINE> with the line number
  • <RANK> with the MPI rank(s)
  • <RANK_COUNT> with the number of MPI ranks
  • <TIMESTAMP> date/time the message is logged

An example illustrating how an application can setup the format string is shown below:

std::string format =
std::string( "***********************************\n" )+
std::string( "* <TIMESTAMP>\n\n" ) +
std::string( "* LEVEL=<LEVEL>\n" ) +
std::string( "* MESSAGE=<MESSAGE>\n" ) +
std::string( "* FILE=<FILE>\n" ) +
std::string( "* LINE=<LINE>\n" ) +
std::string( "* RANK=<RANK>\n" ) +
std::string( "* RANK_COUNT=<RANK_COUNT>\n" ) +
std::string( "***********************************\n" );

◆ push()

virtual void axom::slic::LogStream::push ( )
inlinevirtualinherited

Pushes messages incrementally up the log stream. NO-OP by default.

Note
The intent of this method is to be overridden by concrete implementations that need to be incrementally advanced. This is primarily useful for applications running in a distributed MPI environment, where the push is a collective operation intended for a incrementally advancing messages through the log stream.

Reimplemented in axom::slic::LumberjackStream.

◆ hasPendingMessages()

virtual bool axom::slic::LogStream::hasPendingMessages ( )
inlinevirtualinherited

Tests whether there are any pending messages that need to be flushed. This method should only be overriden for LogStream inherited classes that can reliably test whether pending messages exist.

Returns
Returns true if there are pending messages that need to be flushed

Reimplemented in axom::slic::SynchronizedStream, and axom::slic::LumberjackStream.

◆ isUsingMPI()

virtual bool axom::slic::LogStream::isUsingMPI ( )
inlinevirtualinherited

Tests whether this class relies on MPI.

Returns
Returns true if this class relies on MPI

Reimplemented in axom::slic::SynchronizedStream, and axom::slic::LumberjackStream.

◆ getFormatedMessage()

std::string axom::slic::LogStream::getFormatedMessage ( const std::string &  msgLevel,
const std::string &  message,
const std::string &  tagName,
const std::string &  rank,
const std::string &  rank_count,
const std::string &  fileName,
int  line 
)
protectedinherited

Get the communicator.

Returns
Returns the communicator if it exists, or MPI_COMM_NULL otherwise

Returns the formatted message as a single string.

Parameters
[in]msgLevelthe level of the given message.
[in]messagethe user-supplied message.
[in]tagNameuser-supplied tag, may be MSG_IGNORE_TAG
[in]fileNamefilename where this message is logged, may be MSG_IGNORE_FILE to ignore this field.
[in]rankThe MPI rank(s) that emitted this message
[in]rank_countthe number of MPI ranks that emitted this message
[in]linethe line number within the file where the message is logged. Likewise, may be set to MSG_IGNORE_LINE to ignore this field.
Returns
str the formatted message string.
Postcondition
str != "".

◆ getTimeStamp()

std::string axom::slic::LogStream::getTimeStamp ( )
protectedinherited

Returns a time-stamp.

Returns
str a textual representation of the current time.

The documentation for this class was generated from the following file: