30 if( a.size() > b.size() )
std::swap(a,b) ;
31 return std::string( a.begin(), std::mismatch( a.begin(), a.end(), b.begin() ).first ) ;
66 : type_(type), every_process_(false), line_(0)
89 "Wrn",
"Msg",
"Log",
"Dbg",
"Err"};
90 int type_idx = msg_type;
93 return type_names[type_idx];
95 return type_names[type_idx + 5];
127 case MsgType::warning:
134 case MsgType::message:
148 #ifdef FLOW123D_DEBUG_ASSERTS
176 stream << setfill(
' ');
180 std::stringstream message_stream;
185 std::istringstream istream(scr_stream.str());
186 while(std::getline(istream, segment)) {
190 message_stream << std::setw(18) <<
"";
192 message_stream << segment <<
"\n";
195 stream << message_stream.str();
196 stream << std::flush;
204 stream << setfill(
' ');
207 std::stringstream message_stream;
213 std::istringstream istream(file_stream.str());
214 while(std::getline(istream, segment)) {
215 segments.push_back(segment);
217 if (segments.size() > 1) {
218 message_stream <<
" - |" <<
"\n";
219 for (
auto seg : segments)
220 message_stream << std::setw(4) <<
"" << seg <<
"\n";
221 }
else if (segments.size() == 1) {
222 message_stream <<
" - " << segments[0] <<
"\n";
225 stream << message_stream.str();
226 stream << std::flush;
234 #ifdef FLOW123D_SOURCE_DIR
235 string common_path =
cmn_prefix(
string(FLOW123D_SOURCE_DIR), file_name);
236 file_name.erase (0, common_path.size());
247 stream << setiosflags(ios::left) << std::setw(5) << rank.str();
249 stream << std::setw(5) <<
"";
253 if (
type_ == MsgType::debug) {
262 stream <<
"- -" << std::setw(13) <<
"" <<
"[ ";
267 else stream <<
"null";
#define ASSERT_PERMANENT(expr)
Allow use shorter versions of macro names if these names is not used with external library.
LoggerOptions::InitFlag init_flag()
Check if singleton instance object is initialize.
static LoggerOptions & get_instance()
Getter of singleton instance object.
static std::string format_hh_mm_ss()
int get_mpi_rank() const
Returns number of actual process, if MPI is not supported returns -1.
Class for storing logger messages.
static const std::string msg_type_string(MsgType msg_type, bool full_format=true)
Return string value of given MsgType in full or shorter format (e.g. "WARNING" of "Wrn")
Logger & set_context(const char *file_name, const char *function, const int line)
Stores values for printing out line number, function, etc.
std::stringstream cerr_stream_
Store messages printed to cerr output stream.
Logger & every_proc()
Set flag every_process_ to true.
StreamMask streams_mask_
Mask of logger, specifies streams in actual time into which to be written.
void set_mask()
Set streams_mask_ according to the type of message.
MsgType
Enum of types of Logger messages.
std::string file_name_
Actual file.
Logger(MsgType type)
Constructor.
MsgType type_
Type of message.
bool every_process_
Flag marked if log message is printing for all processes or only for zero process.
void print_file_header(std::stringstream &file_stream)
Print header to file stream, helper method called from print_to_file.
std::string function_
Actual function.
void print_to_screen(std::ostream &stream, std::stringstream &scr_stream, StreamMask mask)
Print formated message to given screen stream if mask corresponds with streams_mask_.
std::stringstream cout_stream_
Store messages printed to cout output stream.
std::string compact_file_name(std::string file_name)
Return compact (relative) path to the given source file.
int mpi_rank_
Actual process (if MPI is supported)
std::string date_time_
Actual date and time.
StreamMask full_streams_mask_
Mask of logger, specifies all streams into which to be written in logger message.
bool print_screen_header(std::stringstream &scr_stream)
Print header to screen stream, helper method called from print_to_screen.
std::stringstream file_stream_
Store messages printed to file.
void print_to_file(std::ofstream &stream, std::stringstream &file_stream, StreamMask mask)
Print formated message to given file stream if mask corresponds with streams_mask_.
Helper class, store mask specifying streams.
static StreamMask cerr
Predefined mask of std::cerr output.
static StreamMask log
Predefined mask of log file output.
StreamMask operator|(const StreamMask &other)
StreamMask operator&(const StreamMask &other)
static StreamMask cout
Predefined mask of std::cout output.
Global macros to enhance readability and debugging, general constants.
std::string cmn_prefix(std::string a, std::string b)
Helper function, use for shorten the code point path.
Logger & operator<<(Logger &log, StreamMask mask)
void swap(nlohmann::json &j1, nlohmann::json &j2) noexcept(is_nothrow_move_constructible< nlohmann::json >::value and is_nothrow_move_assignable< nlohmann::json >::value)
exchanges the values of two JSON objects