@@ -39,17 +39,23 @@ class logger
3939public:
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+
8493private:
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)
129139template <typename S, typename ... TArgs>
130140void 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)
139149template <typename S, typename ... TArgs>
140150void 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)...);
0 commit comments