Skip to content

Commit 6fe6a57

Browse files
committed
[Logs] add SHAMLOGFORMATTER=4 (same as mode 3 but with elapsed time)
1 parent b5af4d3 commit 6fe6a57

2 files changed

Lines changed: 74 additions & 2 deletions

File tree

src/shammodels/sph/src/Solver.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1678,7 +1678,7 @@ shammodels::sph::TimestepLog shammodels::sph::Solver<Tvec, Kern>::evolve_once()
16781678

16791679
// Here we will add self grav to the external forces indep of vel (this will be moved into a
16801680
// sperate module later)
1681-
{
1681+
if(solver_config.self_grav_config.is_sg_on()) {
16821682

16831683
auto constant_G = shamrock::solvergraph::IDataEdge<Tscal>::make_shared("", "");
16841684

src/shamsys/src/change_log_format.cpp

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* @brief
1414
*/
1515

16+
#include "shambase/stacktrace.hpp"
1617
#include "shambase/term_colors.hpp"
1718
#include "shamcmdopt/env.hpp"
1819
#include "shamcmdopt/tty.hpp"
@@ -186,6 +187,74 @@ namespace logformatter {
186187
shambase::term_colors::bold());
187188
}
188189

190+
191+
/**
192+
* @brief Log formatter for style 3, full details + time
193+
*
194+
* @param args The arguments for the log formatter
195+
* @return std::string The formatted log
196+
*/
197+
std::string style4_formatter_full(const logger::ReformatArgs &args) {
198+
199+
u32 tty_width = shamcmdopt::get_tty_columns();
200+
201+
std::string ansi_reset = shambase::term_colors::reset();
202+
std::string ansi_faint = shambase::term_colors::faint();
203+
204+
std::string lineend = shambase::format(
205+
"{5:} [{3:}][rank={6:}][{7:.2f}s]{2:}",
206+
args.color,
207+
args.level_name,
208+
ansi_reset,
209+
args.module_name,
210+
args.content,
211+
ansi_faint,
212+
shamcomm::world_rank(),
213+
shambase::details::get_wtime());
214+
215+
std::string log = shambase::format(
216+
"{0:}{1:}{2:}: {4:}",
217+
args.color,
218+
args.level_name,
219+
ansi_reset,
220+
args.module_name,
221+
args.content,
222+
ansi_faint,
223+
shamcomm::world_rank());
224+
225+
std::string log_line1, log_line2;
226+
size_t first_nl = log.find_first_of('\n');
227+
if (first_nl != std::string::npos) {
228+
log_line1 = log.substr(0, first_nl);
229+
log_line2 = log.substr(first_nl);
230+
} else {
231+
log_line1 = log;
232+
log_line2 = "";
233+
}
234+
235+
u32 ansi_count = ansi_reset.size() * 2 + ansi_faint.size() + args.color.size();
236+
237+
return shambase::format("{:<{}}", log_line1, tty_width - lineend.size() + ansi_count - 1)
238+
+ lineend + log_line2;
239+
}
240+
241+
/**
242+
* @brief Log formatter for style 3, simple details + time
243+
*
244+
* @param args The arguments for the log formatter
245+
* @return std::string The formatted log
246+
*/
247+
std::string style4_formatter_simple(const logger::ReformatArgs &args) {
248+
return shambase::format(
249+
"{5:}{3:}{2:}: {4:}",
250+
args.color,
251+
args.level_name,
252+
shambase::term_colors::reset(),
253+
args.module_name,
254+
args.content,
255+
shambase::term_colors::bold());
256+
}
257+
189258
/**
190259
* @brief The callback called when an exception is thrown
191260
*
@@ -201,7 +270,7 @@ namespace logformatter {
201270
} // namespace logformatter
202271

203272
std::string SHAMLOGFORMATTER = shamcmdopt::getenv_str_default_register(
204-
"SHAMLOGFORMATTER", "3", "Change the log formatter (values :0-3) [default: 3]");
273+
"SHAMLOGFORMATTER", "3", "Change the log formatter (values :0-4) [default: 3]");
205274

206275
std::string SHAMLOG_ERR_ON_EXCEPT = shamcmdopt::getenv_str_default_register(
207276
"SHAMLOG_ERR_ON_EXCEPT", "1", "Enable logging of exceptions (default to 1)");
@@ -224,6 +293,9 @@ namespace shamsys {
224293
} else if (SHAMLOGFORMATTER == "3") {
225294
logger::change_formaters(
226295
logformatter::style3_formatter_full, logformatter::style3_formatter_simple);
296+
}else if (SHAMLOGFORMATTER == "4") {
297+
logger::change_formaters(
298+
logformatter::style4_formatter_full, logformatter::style4_formatter_simple);
227299
} else {
228300
logger::err_ln("Log", "Unknown formatter");
229301
shambase::throw_unimplemented("Unknown formatter");

0 commit comments

Comments
 (0)