16 namespace smith::logger {
20 namespace slic = axom::slic;
22 if (!slic::isInitialized()) {
29 slic::setIsRoot(rank == 0);
31 std::string loggerName = num_ranks > 1 ?
"smith_parallel_logger" :
"smith_serial_logger";
32 slic::createLogger(loggerName);
33 slic::activateLogger(loggerName);
34 if (!slic::activateLogger(loggerName)) {
36 std::cerr <<
"Error: Failed to activate logger: " << loggerName << std::endl;
41 slic::LogStream* i_logstream =
nullptr;
42 slic::LogStream* d_logstream =
nullptr;
43 slic::LogStream* we_logstream =
nullptr;
46 std::string i_format_string =
"<MESSAGE>\n";
47 std::string d_format_string =
"[<LEVEL>]: <MESSAGE>\n";
48 std::string we_format_string =
"[<LEVEL> (<FILE>:<LINE>)]\n<MESSAGE>\n\n";
54 i_format_string =
"[<RANK>] " + i_format_string;
55 d_format_string =
"[<RANK>]" + d_format_string;
56 we_format_string =
"[<RANK>]" + we_format_string;
60 i_logstream =
new slic::LumberjackStream(&std::cout, comm, RLIMIT, i_format_string);
61 d_logstream =
new slic::LumberjackStream(&std::cout, comm, RLIMIT, d_format_string);
62 we_logstream =
new slic::LumberjackStream(&std::cerr, comm, RLIMIT, we_format_string);
64 i_logstream =
new slic::GenericOutputStream(&std::cout, i_format_string);
65 d_logstream =
new slic::GenericOutputStream(&std::cout, d_format_string);
66 we_logstream =
new slic::GenericOutputStream(&std::cerr, we_format_string);
69 slic::setLoggingMsgLevel(slic::message::Debug);
72 addStreamToMsgLevel(i_logstream, slic::message::Info);
73 addStreamToMsgLevel(d_logstream, slic::message::Debug);
74 addStreamToMsgLevel(we_logstream, slic::message::Warning);
75 addStreamToMsgLevel(we_logstream, slic::message::Error);
81 slic::setAbortOnError(
true);
82 slic::setAbortOnWarning(
false);
84 std::string msg = axom::fmt::format(
"Logger activated: '{0}'", loggerName);
86 smith::logger::flush();
91 void finalize() { axom::slic::finalize(); }
93 void flush() { axom::slic::flushStreams(); }
This file contains the interface used for retrieving information about how the driver is configured.
This file contains the all the necessary functions and macros required for logging as well as a helpe...
std::pair< int, int > getMPIInfo(MPI_Comm comm)
Get MPI Info.