Skip to content

Commit a7c1744

Browse files
committed
Fix: Add return character before logging when progress display is shown
When there is an active progress display, log messages would show up after the progress display instead of the next line. Fixes #1570
1 parent 4568836 commit a7c1744

2 files changed

Lines changed: 18 additions & 6 deletions

File tree

src/logging.hpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,23 @@ class logger
3939
public:
4040
template <typename S, typename... TArgs>
4141
void log(log_level with_level, char const *prefix,
42-
fmt::text_style const &style, S const &format_str,
43-
TArgs &&... args) const
42+
fmt::text_style const &style, S const &format_str, TArgs &&...args)
4443
{
4544
if (with_level < m_current_level) {
4645
return;
4746
}
4847

4948
auto const &ts = m_use_color ? style : fmt::text_style{};
5049

51-
std::string str = fmt::format("{:%Y-%m-%d %H:%M:%S} ",
52-
fmt::localtime(std::time(nullptr)));
50+
std::string str;
51+
52+
if (m_needs_leading_return) {
53+
m_needs_leading_return = false;
54+
str += '\n';
55+
}
56+
57+
str += fmt::format("{:%Y-%m-%d %H:%M:%S} ",
58+
fmt::localtime(std::time(nullptr)));
5359

5460
if (m_current_level == log_level::debug) {
5561
str += fmt::format(ts, "[{}] ", this_thread_num);
@@ -81,11 +87,15 @@ class logger
8187
void disable_progress() noexcept { m_show_progress = false; }
8288
void auto_progress() noexcept { m_show_progress = osmium::util::isatty(2); }
8389

90+
void needs_leading_return() noexcept { m_needs_leading_return = true; }
91+
void no_leading_return() noexcept { m_needs_leading_return = false; }
92+
8493
private:
8594
log_level m_current_level = log_level::info;
8695
bool m_log_sql = false;
8796
bool m_log_sql_data = false;
8897
bool m_show_progress = true;
98+
bool m_needs_leading_return = false;
8999

90100
#ifdef _WIN32
91101
bool m_use_color = false;
@@ -129,7 +139,7 @@ void log_error(S const &format_str, TArgs &&... args)
129139
template <typename S, typename... TArgs>
130140
void log_sql(S const &format_str, TArgs &&... args)
131141
{
132-
auto const &logger = get_logger();
142+
auto &logger = get_logger();
133143
if (logger.log_sql()) {
134144
logger.log(log_level::error, "SQL", fg(fmt::color::blue), format_str,
135145
std::forward<TArgs>(args)...);
@@ -139,7 +149,7 @@ void log_sql(S const &format_str, TArgs &&... args)
139149
template <typename S, typename... TArgs>
140150
void log_sql_data(S const &format_str, TArgs &&... args)
141151
{
142-
auto const &logger = get_logger();
152+
auto &logger = get_logger();
143153
if (logger.log_sql_data()) {
144154
logger.log(log_level::error, "SQL", {}, format_str,
145155
std::forward<TArgs>(args)...);

src/progress-display.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ void progress_display_t::print_summary() const
4040
std::time_t const now = std::time(nullptr);
4141

4242
if (m_enabled) {
43+
get_logger().no_leading_return();
4344
fmt::print(stderr, "\r{:90s}\r", "");
4445
}
4546

@@ -62,6 +63,7 @@ void progress_display_t::print_summary() const
6263
void progress_display_t::print_status(std::time_t now) const
6364
{
6465
if (m_enabled) {
66+
get_logger().needs_leading_return();
6567
fmt::print(stderr,
6668
"\rProcessing: Node({}k {:.1f}k/s) Way({}k {:.2f}k/s)"
6769
" Relation({} {:.1f}/s)",

0 commit comments

Comments
 (0)